[英]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.