目前的做法完全是生產準備;但是,有幾件事情不明顯,那不是你的錯。
讓我試着一一回答你的問題。
- ,許多圖書館甚至不具備分型有。
在打字稿2.1,只要你有安裝在node_modules
一個包,你沒有noImplicitAny
開啓,你可以輸入任何你想要的。
如果你不想使用noImplicitAny
(這我會建議您希望隨着時間的增長任何項目),你可以隨時創建聲明模塊項目源文件夾中的declarations.d.ts
因爲你需要:
// do anything you want when you import `"foo"` now.
declare module "foo";
// can only access the `hello` export when importing `"bar"`.
declare module "bar" {
export var hello;
}
- 許多庫具有完全過時分型存在。
你一定要隨時發送拉請求DefinitelyTyped,但如果你真的時間有限,你可以用我給的點(1)的方法。
- 大量文庫的具有
global
分型文件,導致我不能import
它,因爲TS抱怨說,它不是一個模塊。
如果您需要使用從DefinitelyTyped一個全球性的聲明文件,並且它不會自動包含在你的項目,你可能必須將它添加到types
場在tsconfig.json
。 看我其他的答案here,但問題的癥結所在是,如果你需要包括全局聲明爲foo
和bar
包,和你有@types/foo
和安裝@types/bar
,你可以寫在你的tsconfig.json
以下。
{
"compilerOptions": {
"types": ["foo", "bar"]
}
}
- 當一個庫具有正確地包含在它一個
module
成形打字文件的NPM包(如moment.js
),TS似乎仍然是無法找到它,和錯誤行import * as moment from 'moment'
說找不到模塊。
我認爲這與您的目標是ES6有關。嘗試在您的tsconfig.json
中將"moduleResolution"
選項更改爲"node"
。
{
"compilerOptions": {
"moduleResolution": "node"
}
}
對不起,這是一個難題。 其基本原理是實際上具有此解析語義的唯一模塊加載系統是CommonJS(Node使用的策略)。 我同意這可以改進。
謝謝您的詳細解答,我真的很感激。我會再看看我目前所有的混亂情況,並提供一些反饋。 –
再次感謝您,我會接受您的答案,因爲它在技術上回答了我的問題,並給了我很好的提示。但是,我遇到了後續問題,如果您有幾分鐘的時間,請在此處查看。 http://stackoverflow.com/questions/41474704/how-could-i-update-the-knockout-typing-file-to-be-typescript-2-0-friendly –