我对*.d.ts
感到好奇,因为我是TypeScript的新手。有人告诉我,这种文件类似于C++中的“头文件”,但仅适用于JS。但我无法将纯JS文件转换为*.d.ts
文件,除非我强制将*.js
更改为*.ts
。所以我有三个文件:一个JS文件,一个TS文件和一个*.d.ts
文件。
*.d.ts
文件?这是否意味着我可以删除permanently?*.ts
文件,那么,*.d.ts
文件如何知道哪个JS文件映射到自己?如果有人能给我举个例子,那就太好了。
发布于 2017-07-17 18:53:58
编译TypeScript脚本时,可以选择生成一个声明文件(扩展名为.d.ts),该文件用作已编译的JavaScript中组件的接口。在此过程中,编译器会剥离所有函数和方法体,只保留导出类型的签名。然后,当第三方开发人员从TypeScript使用JavaScript库或模块时,可以使用生成的声明文件来描述该库或模块的导出虚拟TypeScript类型。
声明文件的概念类似于C/C++中的头文件的概念。
declare module arithmetics {
add(left: number, right: number): number;
subtract(left: number, right: number): number;
multiply(left: number, right: number): number;
divide(left: number, right: number): number;
}
对于现有的
库,可以手动编写JavaScript类型声明文件,就像对jQuery和Node.js所做的那样。
流行的JavaScript库的声明文件的大型集合托管在DefinitelyTyped和Typings Registry中的GitHub上。提供了一个名为typings的命令行实用程序来帮助搜索和安装存储库中的声明文件。
发布于 2018-08-29 22:31:53
我无法置评,因此我将此添加为答案。
我们在尝试将现有类型映射到javascript库时遇到了一些困难。
要将.d.ts
文件映射到其javascript文件,您需要为.d.ts
文件提供与javascript文件相同的名称,将它们放在相同的文件夹中,并将需要它的代码指向.d.ts
文件。
例如:test.js
和test.d.ts
在testdir/
文件夹中,然后像这样将其导入react组件:
import * as Test from "./testdir/test";
.d.ts
文件作为名称空间导出,如下所示:
export as namespace Test;
export interface TestInterface1{}
export class TestClass1{}
发布于 2019-05-13 15:06:24
针对特定案例的工作示例
假设您有通过npm共享的my-module。
您可以使用npm install my-module
安装它
您可以这样使用它:
import * as lol from 'my-module';
const a = lol('abc', 'def');
该模块的逻辑都在index.js
中
module.exports = function(firstString, secondString) {
// your code
return result
}
要添加类型,请创建文件index.d.ts
declare module 'my-module' {
export default function anyName(arg1: string, arg2: string): MyResponse;
}
interface MyResponse {
something: number;
anything: number;
}
https://stackoverflow.com/questions/21247278
复制相似问题