[英]How to test that typescript declaration files compile against local js library
[英]Typescript Declaration Files for Local JS Files
我正在嘗試在我們正在轉換為Typescript的過程中為我們的Javascript文件添加打字。 但是,我無法識別聲明文件。
這是我的文件結構
Foo.js
module.exports = function Foo() {
return 'Bar';
};
index.d.ts
export = Foo;
declare function Foo(): string;
index.ts
import Foo = require('./js/Foo')
console.log(Foo());
tsconfig.json
{
"compilerOptions": {
"typeRoots": ["./typings"],
"target": "es5",
"strict": true,
"baseUrl": "./",
"paths": {
"*": ["typings/*"]
}
}
}
的package.json
{
"name": "fail",
"version": "1.0.0",
"description": "",
"main": "index.ts",
"scripts": {
"tsc": "tsc"
},
"author": "",
"license": "MIT",
"dependencies": {
"typescript": "^3.1.4"
}
}
這是repo來重現我的問題
https://github.com/erisman20/typings_help
編輯:這是我得到的錯誤
error TS7016: Could not find a declaration file for module './js/Foo.js'. '....../js/Foo.js' implicitly has an 'any' type.
為相對導入提供聲明的唯一方法,例如'./js/Foo'
,實際上是在導入路徑上有聲明文件(加上.d.ts
或/index.d.ts
),或者實際上是在基於rootDirs
選項的導入路徑。 無論typeRoots
也沒有baseUrl
/ paths
進場在這種情況下: baseUrl
/ paths
只會影響模塊的分辨率為“非親屬”路徑, typeRoots
可以用來獲得打字稿加載文件,但不影響輸入路徑和文件之間的關系一點都不
最簡單的解決辦法是把一個Foo.d.ts
文件在同一目錄Foo.js
。 如果要將"rootDirs": ["js", "typings"]
保存在單獨的目錄中,則可以將"rootDirs": ["js", "typings"]
tsconfig.json
"rootDirs": ["js", "typings"]
到tsconfig.json
。 這個改變足以讓你的例子適合我,雖然我發現有相應的Foo.js
和Foo/index.d.ts
文件令人困惑,並鼓勵你在使用子目錄時保持一致,即切換到JavaScript端的Foo/index.js
或者在TypeScript端切換到Foo.d.ts
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.