2014-02-10 63 views
2

在* .d.ts文件之间有什么区别:接口+新的VS级+构造函数打字稿

declare module "m1" { 
} 

declare module m1 { 
} 

而且之间有什么区别:

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

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

回答

3

唯一在报价模块名称不同的是,他们只能在环境声明中使用。当您使用带引号的名称时,您正在描述将被模块加载的模块(使用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')将让你的错误:

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