答案是@TomKunzemann和@ GauravSrivastava的答案的組合:您應該將declare
作爲class
。
隨着declare
你只是告訴編譯器關於類型的形狀和行爲而不實現它,所以它依賴於JavaScript中包含的環境Person
函數。
和class
,你告訴TypeScript,這是你用new
實例化的東西。
最後,您可能不希望將peter
定義爲any
類型,否則TypeScript將不會在之後檢查它。如果剛剛離開關閉: any
,打字稿將推斷peter
是Person
類型的,它會執行所期望的類型的檢查,如檢測錯別字(的例如,lastName
代替lastname
):
declare class Person {
name: string;
lastname: string;
age: number;
}
let peter = new Person(); // okay
console.log(peter.name); // okay
// note the typo below
console.log(peter.lastName); // error!
// "Property 'lastName' does not exist on type 'Person'. Did you mean 'lastname'"?
希望幫助;祝你好運!
這就是我正在尋找的,我只是想知道,爲什麼 聲明函數Person():void; let peter:any = new Person() 不起作用。 – skizofre3e