[英]How to define type of interface in typescript?
我想寫一個 function 來修改具有特定界面的表單的值。 然后我收到錯誤消息,指出字符串不是表單界面鍵的一部分。 如何為 function 定義類型? 為什么我不能將接口用作類型?
interface IForm {
age: number
name: string
job: string
}
// ts 錯誤:無法將字符串分配給“age” | “名字” | “工作”
const setCustom = value => setValue(value, "")
//沒有ts錯誤
const setCustom: (value: "age" | "name" | "job") => void = value => setValue(value, "")
看來您正在尋找keyof
類型運算符,它采用 object 類型,如IForm
並生成其鍵的聯合:
type KeyofIform = keyof IForm;
// type KeyofIform = "age" | "name" | "job"
因此,您在任何地方手動指定"age" | "name" | "job"
"age" | "name" | "job"
"age" | "name" | "job"
你可以改用keyof IForm
,它是等價的,如果IForm
的定義改變,它會自動改變:
const setCustom: (value: keyof IForm) => void = value => setValue(value, "")
// const setCustom: (value: keyof IForm) => void
setCustom("age"); // okay
setCustom("name"); // okay
setCustom("job"); // okay
setCustom("shoeSize"); // error!
// Argument of type '"shoeSize"' is not assignable
// to parameter of type '"age" | "name" | "job"'
你需要放; 在每個變量的末尾:
interface IForm {
age?: number;
name?: string;
job?: string;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.