[英]Using JavaScript Class Mixins with TypeScript Declaration Files
[英]Typescript declaration files contain class definitions with no member implementations
当我查看Backbone声明文件时,我看到:
export class Router extends Events {
...
constructor (options?: RouterOptions);
initialize (options?: RouterOptions);
...
}
以及其他类没有实现的方法定义的地方。 我认为这种语法是为接口保留的。 编译器允许它传入声明文件,但不传入我自己的ts文件。
.d.ts与.ts扩展的编译规则之间是否存在差异? 如果是这样,这些类的类应该如何以不同的方式使用?
.d.ts
文件用于描述某些类的现有 JavaScript或TypeScript实现。
.d.ts
一个类(我将它称为“ declare class
”,因为它们是等价的)与虚拟类或接口完全不同。 当你声明一个declare class
,你会说“还有一些其他类会出现这种形状”。 当您extend
该类时,编译器将假定在运行时存在一个类(或类似于类似的东西)并且该名称在原型链中用作下一个指针时发出代码。
举个例子,这个代码(单独) 不起作用 - 你会得到一个运行时错误,因为Foo
没有在任何地方定义:
declare class Foo { public bar(): void; }
class FooDerived extends Foo { }
另一方面,这段代码很好:
interface Foo { bar(): void; }
class FooImpl implements Foo { public bar() {} }
如果文件具有.d.ts
扩展名,则所有类都被视为前面有一个declare
关键字。 声明不需要实现,它们只提供类型信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.