詳解什么是TypeScript里的Constructor?signature
Constructor signature
TypeScript 官方文檔里關(guān)于 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 函數(shù)也可以使用 new 運算符調(diào)用。 TypeScript 將這些稱為構(gòu)造函數(shù),因為它們通常會創(chuàng)建一個新對象。
編寫構(gòu)造簽名
您可以通過在調(diào)用簽名前添加 new 關(guān)鍵字來編寫構(gòu)造簽名:
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));定義新的函數(shù)類型
下面的代碼使用 constructor signature 定義了一個新的函數(shù)類型:

接收的輸入是 number,輸出是自定義類型 Jerry.
如果去掉 new,就是我們已經(jīng)熟悉的 call signature 語法.
class MyConstructor 實現(xiàn)了 Jerry 類型:

MyConstructor 可以看成 SomeConstructor 的一種具體實現(xiàn)。
這樣,凡是輸入?yún)?shù)需要傳入 SomeConstructor 的地方,我傳 MyConstructor 進去,一樣能夠工作。

demo 在這里相當于工廠函數(shù),我們可以看到,盡管應(yīng)用代碼里沒有顯式使用 new 關(guān)鍵字,最后還是獲得了兩個不同的實例:

以上就是詳解什么是TypeScript里的Constructor signature的詳細內(nèi)容,更多關(guān)于TypeScript Constructor signature的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Manipulation-TypeScript?DOM操作示例解析
這篇文章主要為大家介紹了DOM?Manipulation-TypeScript?DOM操作示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
TypeScript數(shù)據(jù)結(jié)構(gòu)之隊列結(jié)構(gòu)Queue教程示例
這篇文章主要為大家介紹了TypeScript數(shù)據(jù)結(jié)構(gòu)之隊列結(jié)構(gòu)Queue教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
Typescript?轉(zhuǎn)換類型操作索引映射類型IIMT模式學習
這篇文章主要為大家介紹了Typescript?轉(zhuǎn)換類型操作之索引映射類型IIMT模式學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
TypeScript使用noImplicitAny實戰(zhàn)解析
這篇文章主要為大家介紹了TypeScript使用noImplicitAny實戰(zhàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
簡單三行代碼函數(shù)實現(xiàn)幾十行Typescript類型推導
這篇文章主要為大家介紹了簡單三行代碼函數(shù)實現(xiàn)幾十行Typescript類型推導的方案示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
ts?類型體操?Chainable?Options?可鏈式選項示例詳解
這篇文章主要為大家介紹了ts?類型體操?Chainable?Options?可鏈式選項示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09

