首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关于TypeScript中的"*.d.ts“

关于TypeScript中的"*.d.ts“
EN

Stack Overflow用户
提问于 2014-01-21 09:05:16
回答 7查看 244.5K关注 0票数 483

我对*.d.ts感到好奇,因为我是TypeScript的新手。有人告诉我,这种文件类似于C++中的“头文件”,但仅适用于JS。但我无法将纯JS文件转换为*.d.ts文件,除非我强制将*.js更改为*.ts。所以我有三个文件:一个JS文件,一个TS文件和一个*.d.ts文件。

  1. 它们之间有什么关系?
  2. 如何使用*.d.ts文件?这是否意味着我可以删除permanently?
  3. If *.ts文件,那么,*.d.ts文件如何知道哪个JS文件映射到自己?

如果有人能给我举个例子,那就太好了。

EN

回答 7

Stack Overflow用户

发布于 2017-07-17 18:53:58

d代表Declaration Files

编译TypeScript脚本时,可以选择生成一个声明文件(扩展名为.d.ts),该文件用作已编译的JavaScript中组件的接口。在此过程中,编译器会剥离所有函数和方法体,只保留导出类型的签名。然后,当第三方开发人员从TypeScript使用JavaScript库或模块时,可以使用生成的声明文件来描述该库或模块的导出虚拟TypeScript类型。

声明文件的概念类似于C/C++中的头文件的概念。

代码语言:javascript
复制
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库的声明文件的大型集合托管在DefinitelyTypedTypings Registry中的GitHub上。提供了一个名为typings的命令行实用程序来帮助搜索和安装存储库中的声明文件。

票数 115
EN

Stack Overflow用户

发布于 2018-08-29 22:31:53

我无法置评,因此我将此添加为答案。

我们在尝试将现有类型映射到javascript库时遇到了一些困难。

要将.d.ts文件映射到其javascript文件,您需要为.d.ts文件提供与javascript文件相同的名称,将它们放在相同的文件夹中,并将需要它的代码指向.d.ts文件。

例如:test.jstest.d.tstestdir/文件夹中,然后像这样将其导入react组件:

代码语言:javascript
复制
import * as Test from "./testdir/test";

.d.ts文件作为名称空间导出,如下所示:

代码语言:javascript
复制
export as namespace Test;

export interface TestInterface1{}
export class TestClass1{}
票数 97
EN

Stack Overflow用户

发布于 2019-05-13 15:06:24

针对特定案例的工作示例

假设您有通过npm共享的my-module。

您可以使用npm install my-module安装它

您可以这样使用它:

代码语言:javascript
复制
import * as lol from 'my-module';

const a = lol('abc', 'def');

该模块的逻辑都在index.js

代码语言:javascript
复制
module.exports = function(firstString, secondString) {

  // your code

  return result
}

要添加类型,请创建文件index.d.ts

代码语言:javascript
复制
declare module 'my-module' {
  export default function anyName(arg1: string, arg2: string): MyResponse;
}

interface MyResponse {
  something: number;
  anything: number;
}
票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21247278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档