什么是 TypeScript 里的 Constructor signature
TypeScript 官方文檔里關于 Constructor signature 只有這短短的一段話:
JavaScript functions can also be invoked with the new operator. TypeScript refers to these as constructors because they usually create a new object. You can write a construct signature by adding the new keyword in front of a call signature:
JavaScript 函數也可以使用 new 運算符調用。 TypeScript 將這些稱為構造函數,因為它們通常會創建一個新對象。 您可以通過在調用簽名前添加 new 關鍵字來編寫構造簽名:
type SomeConstructor = {new (s: string): SomeObject; }; function fn(ctor: SomeConstructor) {return new ctor("hello"); }但這個例子還是看得我一頭霧水,自己摸索了一下,寫了一個例子:
type Jerry = {score: number; }type SomeConstructor = {new(s: number): Jerry; };class MyConstructor implements Jerry{score: number;constructor(score: number){this.score = score;} }function demo(ctor: SomeConstructor, number:number) {return new ctor(number); }console.log('Ethan:' , demo(MyConstructor, 100)); console.log('Ethan:' , demo(MyConstructor, 200));下面的代碼使用 constructor signature 定義了一個新的函數類型:
接收的輸入是 number,輸出是自定義類型 Jerry.
如果去掉 new,就是我們已經熟悉的 call signature 語法.
class MyConstructor 實現了 Jerry 類型:
MyConstructor 可以看成 SomeConstructor 的一種具體實現。這樣,凡是輸入參數需要傳入 SomeConstructor 的地方,我傳 MyConstructor 進去,一樣能夠工作。
demo 在這里相當于工廠函數,我們可以看到,盡管應用代碼里沒有顯式使用 new 關鍵字,最后還是獲得了兩個不同的實例:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的什么是 TypeScript 里的 Constructor signature的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD 介绍 R7 7840U 处理器:
- 下一篇: 10GbE以太网MAC和PHY