繁体   English   中英

Typescript声明文件包含没有成员实现的类定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM