2017-01-24 22 views

回答

3

是,排序的。還有一招,宣佈這些屬性可選void類型不允許的對象類型具有特定屬性:

type NotAPromise = { then?: void }; 

function f(o: NotAPromise) { 
} 

f(1); // ok 
f({}); // ok 


f(Promise.resolve(2)); 

Argument of type 'Promise<number>' is not assignable to parameter of type 'NotAPromise'. 
    Types of property 'then' are incompatible. 
    Type '{ (onfulfilled?: (value: number) => number | PromiseLike<number>, onrejected?: (reason: any) => n...' is not assignable to type 'void'. 

這是相當粗糙的,因爲它會拒絕這樣一個

f({ then: 42 }); 

如果有效的非承諾這個不斷變,你可以嘗試申報像這樣

type NotAPromise = { then?: NotAFunction }; 

其中NotAFunction來自this answer問題。

相關問題