我有這個 List 物件,但是后來形狀改變了,我需要一個額外的 id 屬性,但是如何不修改 List 呢?
interface List {
name: string //without adding id here
}
interface ListData {
type: string
lists: List[] //how to include id here?
}
const data: ListData = {
type: 'something',
lists: [{
id: '1',
name: 'alice'
}, {
id: '2',
name: 'ja'
}]
}
uj5u.com熱心網友回復:
您可以擴展介面List
interface List {
name: string //without adding id here
}
interface ListId extends List {
id: string
}
interface ListData {
type: string
lists: ListId[]
}
const data: ListData = {
type: 'something',
lists: [{
id: '1',
name: 'alice'
}, {
id: '2',
name: 'ja'
}]
}
uj5u.com熱心網友回復:
您可以使用extends 關鍵字來擴展現有介面
interface ListWithId extends List {
id: string;
}
或者您可以在現有List界面中將 id 設為可選,因此如果您已經在不影響任何人的地方使用了它。
interface List {
name: string;
id?: string;
}
注意:?用于使屬性可選。
uj5u.com熱心網友回復:
為以前的答案添加替代方法
type ListWithId = List & {id: string};
interface ListData {
type: string
lists: ListWithId[] //how to include id here?
}
或者,不漂亮但有效
interface ListData {
type: string
lists: (List & {id: string})[] //how to include id here?
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494256.html
標籤:javascript 打字稿
上一篇:將陣列推入TS中的陣列陣列
