目前我的組件包含一個介面,value: ReactSelectOptions | ReactSelectOptions[];它被定義為
export interface ReactSelectOptions {
value: string | number;
label: string;
}
但是如果我嘗試訪問value.label或者value[0].label我收到一條錯誤訊息
Element implicitly has an 'any' type because expression of type '"label"' can't be used to index type 'ReactSelectOptions | ReactSelectOptions[]'.
和
Element implicitly has an 'any' type because expression of type '0' can't be used to index type 'ReactSelectOptions | ReactSelectOptions[]'.
這里有什么問題,我該如何解決?
順便說一句,我還有另一個屬性isMulti: boolean,這就是為什么我有時需要我的值是物件陣列,如果有幫助的話。
uj5u.com熱心網友回復:
問題源于value可能是ReactSelectOptions或陣列的事實ReactSelectOptions[]。TS 不知道型別將是什么,因為這將在運行時決定,因此它會強制您進行編譯時檢查。
對于您的情況,檢查 var 是否為陣列就足夠了。與此類似的東西應該可以幫助您:
interface ReactSelectOptions {
value: string | number;
label: string;
}
function someF(maybeArr:ReactSelectOptions | ReactSelectOptions[]) {
if (Array.isArray(maybeArr)) {
maybeArr[0].label
} else {
maybeArr.label
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481450.html
標籤:打字稿
上一篇:如何推斷深層物體?
