2017-05-12 7 views
0

ライブラリのtypedefinition(.d.ts)ファイルを使用する場合、タイプスクリプトは、インポートするものの定義を対応するタイプとどのように関連づけますか?例えばTypescriptは、対応する実装でインポートするものの型定義をどのように関連づけますか?

我々場合:

npm install @types/chai @types/mocha --save-dev 

はその後bar.spec.js内側:

import { expect } from 'chai'; 

活字体は今expectのための型指定されたファサードを理解できますか?これを行うにはどのようなプロセスが必要ですか?

答えて

1

私の意見では、型定義はかなり進化の歴史があり、かなり複雑です。あなたは非相対モジュールをインポートするときに、この場合node_modules/@types

は「型ルート」に建てられたの一種であるので、TSは、解決のためにnode_modules/@types内の定義を探すこと(例"chai""./chai"は相対的である、非相対である)を知っています。例えば、from "chai"は、TSが定義のためにnode_modules/@types/chai/index.d.tsを見つける結果となる。これは、TSがあなたがそのモジュールから何をインポートできるのか、そしてそのようなものがどのように見えるかを知る方法です。

module resolution in the docsについて詳しく読むことができます。タイプExpectStaticのメンバーexpectが含ま.d.tsファイルが書き込まれる方法

(特にほとんど公表されたライブラリ同時にsupport several module system flavorsため)に従うことは難しいことができますが、短いチャイでexportsinterface ChaiStatic that describes the shape of the module。だから、どのようにTSがimport { expect } from "chai"なのかを知っています。

また、チャイの現在の定義は、あとでlatest way to define a UMD moduleに従うとは思われません。しかし、これはどのような方法でも両立できません。

関連する問題