gpt4 book ai didi

typescript - TypeScript 中的接口(interface) + 新 vs 类 + 构造函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:00 25 4
gpt4 key购买 nike

在 *.d.ts 文件中有什么区别:

declare module "m1" {
}

declare module m1 {
}

?

还有什么区别:

declare module "m1" {
export class c1 {
constructor(value: string);
}
}

declare module "m1" {
export interface c1 {
new(value: string);
}
}

最佳答案

引号中模块名称的唯一不同是它们只能用于环境声明。当您使用带引号的名称时,您是在描述一个将被模块加载的模块(使用 require)。

类和接口(interface)之间的区别在于,对于类,您将被允许直接创建新实例:

var instance = new m1.c1('val');

对于接口(interface),您需要另外提供一个输入到接口(interface)的变量,以便创建一个新的接口(interface):

declare module m1 {
interface c1 {
new(value: string);
}

var example: m1.c1;
}

// Not allowed
// var instance = new m1.c1('val');

// Allowed
var instance = new m1.example('val');

使用 new m1.c1('val') 会得到错误:

The property 'c1' does not exist on value of type 'typeof m1'.

关于typescript - TypeScript 中的接口(interface) + 新 vs 类 + 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com