TypeScript を使っていると、結構必要になる型定義ファイル。 型定義が存在しなかったり、古かったりするライブラリを使って、苦労した経験があるひとは多いのではないでしょうか。 今回は、DefinitelyTyped にコントリビュートする機会が最近増えたので、個人的な手順をまとめておきます。 はじめに まず、今回は新しい型定義ファイルを作成するケースを想定しています。 コントリビュートの仕方については、まず公式ドキュメントをさらりと眺めておいてください。 ただ、結構わかりにくいと思うので、これから順を追って説明していきます。 https://github.com/DefinitelyTyped/DefinitelyTyped それから型定義が存在しない事を確認しましょう。 https://microsoft.github.io/TypeSearch/ 事前準備 型定義の Genera
TypeScript 3.0, our next release of the type system, compiler, and language service, is fast-approaching! Today we’re excited to announce the Release Candidate of TypeScript 3.0! We’re looking to get any and all feedback from this RC to successfully ship TypeScript 3.0 proper, so if you’d like to give it a shot now, you can get the RC through NuGet, or use npm with the following command: You can a
前提. $ $(yarn bin)/tsc --version Version 2.8.3 async を付けない場合,以下のコードはコンパイルが通る. function foo(): Promise<string> { return new Promise((resolve) => resolve('foo')); } async を付与すると上記コードはコンパイルが通らなくなる. // NG! async function foo(): Promise<string> { return new Promise((resolve) => resolve('foo')); } 以下のように,戻り値側にも型パラメータを付与するとコンパイルが通る. async function foo(): Promise<string> { return new Promise<string>((resol
TypeScript の tsconfig.json について検討 を 続けています. 今回はコンパイル・オプションについて考えます. 作業環境 Windows 10 64bitNode.js 8.4.0 64bitTypeScript 2.4これまでの振り返りTypeScript で Hello World では、Visual Studio Code の 公式ドキュメント の tsconfig.json を基に作成し、最小限のコンパイル・オプションを考え、ECMAScript の 最新に合わせた形になりました. 1 2 3 4 5 6 7 { "compilerOptions": { "target": "es2017", "module": "commonjs", "sourceMap": true } } 続いて、TypeScript の tsconfig.json を 考える では
qiita.com はてなエンジニア Advent Calendar 2017 5日目の記事です。 前回はid:chris4403によるAmazon Pollyを試してみた - memo logでした。いやぁ社長さすがです!! さて今日はEnumについての話題です。 TypeScriptは実行時に影響を及ぼすような独自機能は積極的に導入しない傾向にありますが、ぱっと思いつく例外がEnumとNamespace(旧Internal module)です。 今日はそのEnumについての話です。 Enumのコンパイル結果 TypeScriptを書く上でJavaScriptへのコンパイル結果を意識することは少ないと思いますが、Enumについてはコンパイル結果を知っていたほうが理解が早いと思われます。 例えば以下のコードは enum IdolAttr { cute, cool, passion, } 以
Today we’re excited to announce the release of TypeScript 2.4! If you haven’t yet heard of TypeScript, it’s a superset of JavaScript that brings static types and powerful tooling to JavaScript. These static types are entirely optional and get erased away – you can gradually introduce them to your existing JavaScript code, and get around to adding them when you really need. At the same time, you ca
【2017年12月18日 追記】この記事は古いTypeScript (2.0以前) を念頭に置いている。もちろん、現在のTypeScriptにも当てはまる記事はあるだろうし、TypeScript以外の言語における合併型 (union types) についてもある程度読み替えられるかもしれない。ただしElmとは “Union Types” の用法が完全に相入れないのでElmユーザーの方はお帰りください。 TypeScript 1.4について、 TypeScript 1.4.1 変更点 – Qiita という記事が目に留まった。で、その中の 直和型(Union Types) という項目に引っかかりを感じた。: なぜ引っかかりを感じたかというと、TypeScriptに今回導入されたUnion Typesと、巷に言う直和型というのは、異なる概念であるからだ。 注意:以下の話は型理論の専門家でもない
追記1: plugins周りに参考Issueや @Quramy パイセンの記事へのリンクを追加。 こんばんは@vvakameです。 TypeScript 2.3 RCがアナウンスされましたね。 What's new in TypeScriptも更新されているようです。 TypeScriptのリリースサイクルの変更がアナウンスされた後の初めてのリリース候補です。 変更点まとめ --target es3 と --target es5 でもジェネレータが使えるようになった Generator support for ES3/ES5 非同期イテレータのサポート Asynchronous iterators async generatorsとasync iterationのサポート for-await-of のサポート --downlevelIteration オプションの追加 Genericsの型
無料で自動化環境を整備できることで有名な Google Apps Script ですが、以前はブラウザで JavaScript を用いて開発する必要があったため辛い部分もありました(人による)。 現在は公式からローカル開発をするための公式 CLI ツールが提供されているので、静的型付けの恩恵を受けるべく TypeScript を用いて開発できるようにしてみました。 公式の CLI ツール G Suite Developers Blog: Advanced Development Process with Apps Script danthareja/node-google-apps-script: The easiest way to develop Google Apps Script projects インストール自体は Node.js が入っている環境であれば npm install
イントロダクション 基本 「最も共通する型」(Best common type) 文脈上(contextual)の型 イントロダクション このセクションでは、TypeScriptでの型推論について説明します。 具体的に言えば、何処でどのように型が推論されるのかについて説明します。 基本 TypeScriptでは、型が明示的に注釈(annotation)されていない場合に、 型推論が型を提供するタイミングが幾つか存在します。 例えば、このコードでは、 let x = 3; x変数の型は、数値(number)であると推論されます。 この類の推論は、変数とメンバの初期化、パラメーターへのデフォルト値の設定、関数が返す型の判定のタイミングで行われます。 ほとんどのケースで、型推論は分かりやすいものになっています。 次のセクションでは、型がどのように推論されるのかを、幾つかの微妙な違いをもとに学習し
こんにちは、@armorik83です。今年もよろしくお願いします。 今回はTypeScript (with commonjs)のexport周りについて、あまりにも何度も同じ過ちを犯しているためメモを残します。 TypeScriptでのexportの書き方は多い? TypeScriptで外部モジュールをexportさせるとき、書きうるスタイルが多いイメージを勝手に持っていましたが、実際には一通りしかありません。 その前にJavaScriptのexportの方法をおさらい 多いイメージを持っていた原因ですが、まずJavaScriptには用途別の2つのexport方法があります。(追記: 勝手に2つあるように思い込んでいただけでした) exports.foo = foo; fooは関数です。ソース内に複数のパブリックな関数がある場合に、
TypeScript の Promise の型 だと、型パラメータが Promise#then 側しかなくて、 Promise#catch 側の型が any になってしまって不便だ。 もし、catch 側の型についても型引数で指定できたなら、より安全なプログラミングができる。 そこで、catch 側の型を指定していない理由について考察してみた。 理想 const promise: IdealPromise<T, E> = getPromise(); promise .then((x) => { /* x は T 型 */ }); promise .catch((e) => { /* e は E 型 */ }); 実際 const promise: Promise<T> = getPromise(); promise .then((x) => { /* x は T 型 */ }); prom
機能的にはもうかなり充実してきたので「もう次の出たの」みたいな感想になってきました。 こんばんは@vvakameです。 TypeScript 2.2がアナウンスされましたね。 What's new in TypeScriptも更新されているようです。 変更点まとめ クラスのMixinパターンのサポートMixin classes 特定のコンストラクタパターンを持つクラスについてMixinパターンのbaseに指定できるようになった TypeScript的に自然な型の導出が行われるのが良いという話 インタフェースが object-like typeならなんでも拡張できるようになった Allow deriving from object and intersection types type aliasと組み合わせできなかったのができるようになった intersection typesはOKだけど
TypeScriptを使って気づいた点、調べてもあまり情報が出てこなかった点をまとめます。 初心者なので、おかしい点があれば指摘をお願いします。 使用したバージョンは 1.6.2 です。 演算子による暗黙の型変換は警告されない場合がある 通常、TypeScriptでは異なる型同士の演算はエラーになります。 const one:number[] = [1]; const two:number = 2; const three:boolean = false; console.log(one + two); // error TS2365: Operator '+' cannot be applied to types 'number[]' and 'number'. console.log(two + three); // error TS2365: Operator '+' cannot
Today our team is happy to present our latest release with TypeScript 2.2! For those who haven’t yet heard of it, TypeScript is a simple extension to JavaScript to add optional types along with all the new ECMAScript features. TypeScript builds on the ECMAScript standard and adds type-checking to make you way more productive through cleaner code and stronger tooling. Your TypeScript code then gets
どうも、らこです。 Angular 2の開発リポジトリでは型定義ファイルの依存解決に関して、最初はtsdだったのが途中でtypingsに移り、そして最近またtsdに回帰していたのですが、ついにtsdすらも使わず、npmだけですべてを解決するようになってました。 いったいどうやって?というのが今回のお話で、結論から言うと @types スコープから公開されているパッケージがdevDependenciesとして依存されるようになっていました。 @types typesという名前のユーザーで、明らかにbotだけど中身はMicrosoftの人らしい。(メールアドレスから) どのパッケージもだいたい 2016/5/17 に最初のpublishがされているらしく、最近始まった取り組みのようです。 現在1700超のパッケージが公開されてますが、すべて型定義ファイルのパッケージです。型定義は https:
keyof キーワード key とオブジェクトを受け取りプロパティの値を取り出す関数を考えます。 function getProp(obj: {}, key: string) { return obj[key]; } この関数使って変数を宣言すると型推論では返り値は any になってしまいます。 const urara = { age: 15, name: "chiya", }; const a = getProp(urara, 'age'); // any const n = getProp(urara, 'name'); // any もうちょい頑張って型付けしたいと思ったら obj の型を絞るしかなさそうです。 interface Urara { age: number; name: string; } では key の型は?となると今までは素朴に String Literal ty
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く