我想{name:string,value:string}從另一種型別構造型別Todo。
下面的代碼拋出錯誤:屬性 '0' 在型別 'Pick<Todo, "items">' 上不存在。
type Todo = {
title: string;
items:Array<{name:string,value:string}>;
description: string;
completed: boolean;
}
type TodoItems = Pick<Todo, "items">[0]; //ERROR: Property '0' does not exist on type 'Pick<Todo, "items">'.
const todo: TodoItems = {
name: "Clean room",
value: "yes",
};
注意:
Todo來自ts模塊,因此不可編輯。
我可以遵循哪些方法來提取{name:string,value:string}的Todo?
uj5u.com熱心網友回復:
我認為您需要像 Dmitrii Zolotuhin 所說的那樣將 Todo 專案拆分為單獨的型別,這將是最正確的方法。但是如果你做不到,你可以創建這種型別
type TodoItems = Todo["items"][number]
// ...or
type TodoItems = Pick<Todo, "items">["items"][number]
打字稿游樂場
uj5u.com熱心網友回復:
你幾乎是對的,試試 type TodoItems = Todo["items"][0];
type Todo = {
title: string;
items:Array<{name:string,value:string}>;
description: string;
completed: boolean;
}
type TodoItems = Todo["items"][0];
//...
游樂場鏈接
uj5u.com熱心網友回復:
我會以另一種方式做到這一點:
interface TodoItem {
name: string
value: string
}
interface Todo {
title: string
items: TodoItem[]
description: string
completed: boolean
}
const todo: TodoItem = {
name: "Clean room",
value: "yes",
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/315142.html
標籤:打字稿
