簡體   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