我正在嘗試將回傳的數字狀態轉換為 UI 中的字串,如下所示:
{statuses[job.status]}
const statuses = {
1: "Processing",
2: "Done",
3: "Aborted",
4: "Queued",
}
但是收到這條訊息:
在型別 '{ 1: string; ' 上找不到帶有型別為 'number' 的引數的索引簽名。2:字串;3:字串;4:字串;}'
我試過添加一個介面,但仍然遇到同樣的問題
interface IStatus {
1: string;
2: string;
3: string;
4: string;
}
const statuses = {
1: "Processing",
2: "Done",
3: "Aborted",
4: "Queued",
} as IStatus;
我已經尋找了解決此問題的方法,但似乎無法在我的實體中使用它。
uj5u.com熱心網友回復:
只需要將索引簽名添加到您的界面
interface IStatus {
[key: number]: string,
1: string;
2: string;
3: string;
4: string;
}
演示
uj5u.com熱心網友回復:
只需這樣做:
const statuses: Record<number, string> = {
1: "Processing",
2: "Done",
3: "Aborted",
4: "Queued",
// ...
}
參考: Record<Keys, Type>
你也可以keyof這樣使用:
{statuses[job.status as keyof statuses]}
如果您只有1, 2, 3,4作為鍵,那么最好只輸入您的job.statusas 1 | 2 | 3 | 4(與 相同keyof statuses)。Record<number, string>將接受所有數字作為鍵,這可能會導致較弱的型別檢查。如果您不是job從某個外部來源獲得的,您也可以嘗試使用列舉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/315093.html
標籤:打字稿
