初始分配之後我有一個接口Base
,哪些接口A
和B
延伸,並且A
和B
都有是獨特的並且在其他不存在的屬性。在我的代碼,我有一些數據,將根據類型而改變:指定變量的類型在打字稿
interface Base {
basicProperty: any,
basicProperty2: any
}
interface A extends Base {
aSpecificProperty: any
}
interface B extends Base {
bSpecificProperty: any
}
function(type): A | B {
const data: A | B = {
basicProperty: 1,
basicProperty2: 2
}
if (type === 'A') {
// Data should be type A
data.aSpecificProperty = 3;
} else if (type === 'B') {
// Data should be type B
data.bSpecificProperty = 3;
}
return data;
}
有沒有辦法做到這一點沒有打字稿抱怨不包含正確的屬性類型?或者,有沒有辦法將data
的類型從A | B
重新分配/指定爲A
或B
?
我更新的問題,使其多一點具體談談我的使用情況。 – josh
好的,我明白了。讓我問你,關於如我所建議的那樣在'if' con塊中創建'data'對象,對你來說是一種選擇嗎?否則,你將需要聲明'data'作爲你的'Base'接口('data:Base'),你將需要使用'cast'操作來改變'if'條件中的類型。 – Diullei
我在上面的例子中簡化了數據,但數據是一個大對象......所以如果我將數據複製到每個數據中,這將會造成很多重複。我實際上通過查看「cast」(我創建沒有類型的「基礎數據」,然後使用它們各自的類型爲A和B創建變量)並在if塊中分配,來分別計算出要執行的操作。那有意義嗎? – josh