鍍金池/ 問答/C  HTML/ typescript這個語法怎么理解?

typescript這個語法怎么理解?

function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) {
    return class extends constructor {
        newProperty = "new property";
        hello = "override";
    }
}
<T extends {new(...args:any[]):{}}>(constructor:T)

這句語法好奇怪,可以解釋下嗎?

class extends constructor

這又是什么?class extends?

回答
編輯回答
離魂曲

先說第一個問題<T extends {new(...args:any[]):{}}>(constructor:T)這里外面的尖括號這是ts的泛型語法,具體的語法規(guī)則看這里,...args,這里一小段是ECMAScript6的擴(kuò)展運算符語法,具體的規(guī)則看這里。

第二個問題class extends constructor這個是ECMAScript6的類繼承語法,具體的語法規(guī)則看這里

2018年4月18日 01:24
編輯回答
孤島

我在看 typescript 裝飾器的時候也看到這個例子,這個函數(shù)的作用 是說 重載構(gòu)造函數(shù)(真是高端...)

extends 是關(guān)鍵字, 這個關(guān)鍵字可以實現(xiàn)泛型約束。

{new(...args:any[]):{}} 是用來描述約束條件的。

new (...args: any[]) 是 a mixin constructor type, mixin constructor type 是 TypeScript 2.2 新增

new (...args: any[]) 表示 傳入的類型是 mixin constructor type

:{} 表示 這個 a mixin constructor type 返回值類型 是 對象

2017年6月7日 04:42