在* .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);
}
}
答案 0 :(得分:5)
与引号中的模块名称唯一不同的是它们只能在环境声明中使用。当您使用带引号的名称时,您将描述一个模块加载的模块(使用require
)。
类和接口之间的区别在于,您可以直接在类中创建新实例:
var instance = new m1.c1('val');
使用该界面,您需要另外提供一个键入接口的变量,以便创建一个新的变量:
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')
会出现错误:
属性'c1'在'typeof m1'类型的值上不存在。