本地 JS 文件的 Typescript 声明文件
Typescript Declaration Files for Local JS Files
我正在尝试为工作中的 Javascript 文件添加类型,同时我们正在转换为 Typescript。但是,我无法识别声明文件。
这是我的文件结构
- js
- Foo.js
- 打字
- 富
- index.d.ts
- index.ts
- package.json
- tsconfig.json
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"
}
}
这是重现我的问题的回购协议
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
仅影响 "non-relative" 路径的模块解析,并且 typeRoots
可以用来让TypeScript加载文件,但完全不影响导入路径和文件的关系。
最简单的解决方案是将 Foo.d.ts
文件放在与 Foo.js
相同的目录中。如果您想将打字保存在单独的目录中,则可以将 "rootDirs": ["js", "typings"]
添加到 tsconfig.json
。该更改足以使您的示例对我有用,尽管我发现拥有相应的 Foo.js
和 Foo/index.d.ts
文件会令人困惑,并且会鼓励您在使用子目录时保持一致,即切换到Foo/index.js
在 JavaScript 端或切换到 Foo.d.ts
在 TypeScript 端。
我正在尝试为工作中的 Javascript 文件添加类型,同时我们正在转换为 Typescript。但是,我无法识别声明文件。
这是我的文件结构
- js
- Foo.js
- 打字
- 富
- index.d.ts
- 富
- index.ts
- package.json
- tsconfig.json
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"
}
}
这是重现我的问题的回购协议
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
仅影响 "non-relative" 路径的模块解析,并且 typeRoots
可以用来让TypeScript加载文件,但完全不影响导入路径和文件的关系。
最简单的解决方案是将 Foo.d.ts
文件放在与 Foo.js
相同的目录中。如果您想将打字保存在单独的目录中,则可以将 "rootDirs": ["js", "typings"]
添加到 tsconfig.json
。该更改足以使您的示例对我有用,尽管我发现拥有相应的 Foo.js
和 Foo/index.d.ts
文件会令人困惑,并且会鼓励您在使用子目录时保持一致,即切换到Foo/index.js
在 JavaScript 端或切换到 Foo.d.ts
在 TypeScript 端。