u-ryo's blog

various information for coding...

Category: Typescript

Number to String on Angular/TypeScript

| Comments

Angularを書いていて、 Type 'string' is not assignable to type 'number'.と言われて驚いたので調べました。 えー、そのくらいよしなに変換してくれるんじゃないのー?! 結構型に厳しいんですね。 Typescript, toFixed. Type 'string' is not assignable to type 'number'(12.32).toFixed(2)とあるので試すとその通りでした。 この2ってなんだろう? と思ったら、「小数点以下第2位までの表示(第3位で四捨五入、無ければ0埋め)」ってことなんですね。

Downloading a File on Angular

| Comments

JHipsterのAngularでfileをdownloadするUIを作っていました。 AタグlinkからserverのAPI叩いて、 Content-Disposition: attachment;filename=... と返せば済むだろう、 と思ってたんですが、そういえば認証通さねばなりません。 となると一旦browserで全部受けてblobにしてから返さないとならなさそうです。 認証header自体は、JHipsterならHTTPのinterceptorがあって、 フツーにthis.http.get(...)とかすれば勝手に付けてくれます。 HTTP Headerの付け方は公式documentにある通りです。 Angular 2 download .CSV file click event with authenticationを参考に、 service化しました。 FileSaver.jsを使うと楽そうですけど、 そんなに互換性が重視されるわけではないことと大したcode量ではないことから、 自分で書きました。 最後、window.open(url);だとwindowが上がってきてしまうので、 AngularでCSVをAPIからDLするときに色々したお話にあるように、 裏で自分で<a href="...">作って自分で叩いて自分で消す、 というように書いたら、うまく行きました。

New Map on Typescript

| Comments

Angular5で、といいますかTypescriptで、 Mapを一度にnewしたかったんですが、 どうするのかなーって。

new Map()して.set()でmethod chainで繋いで行くのもありますが、 一番簡単なのは、 new Map([['key1','val1'],['key2','val2'],['key3','val3']])という ようなnested arrayでしょうか。 cf. Map & Set

ただ、こうするとmap['key1']delete(map['key2'])は効かず、 map.get('key1')map.delete('key2')としないとならない、 というのにハマりました。