par*_*ent 3 javascript typescript
当我查看Backbone声明文件时,我看到了:
export class Router extends Events {
    ...
    constructor (options?: RouterOptions);
    initialize (options?: RouterOptions);
    ...
}
Run Code Online (Sandbox Code Playgroud)
以及其他类没有实现的方法定义的地方.我认为这种语法是为接口保留的.编译器允许它传入声明文件,但不传入我自己的ts文件.
.d.ts与.ts扩展的编译规则之间是否存在差异?如果是这样,这些类的类应该如何以不同的方式使用?
.d.ts文件用于描述某些类的现有 JavaScript或TypeScript实现.
a中的一个类.d.ts(我只是将它称为" declare class"因为它们是等价的)与虚拟类或接口完全不同.当你声明一个时declare class,你会说"还有一些其他类会出现这种形状".当你使用extend那个类时,编译器会在假设确实存在一个类(或类似于类似的东西)的情况下发出代码,该类在运行时出现,用作原型链中的下一个指针.
仅作为示例,此代码(单独)不起作用 - 您将得到运行时错误,因为Foo未在任何位置定义:
declare class Foo {  public bar(): void; }
class FooDerived extends Foo { }
Run Code Online (Sandbox Code Playgroud)
另一方面,这段代码很好:
interface Foo { bar(): void; }
class FooImpl implements Foo { public bar() {} }
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4897 次  |  
        
|   最近记录:  |