我有一個公司物件,看起來像這樣:
{
tracking_hours: {
open: '8:00',
close: '20:00'
}
}
我用它來設定值:
set({
openTime: setTime(company, 'open_time'),
closeTime: setTime(company, 'close_time'),
})
我需要以某種方式為公司設定setTime型別
export function setTime(
company: {
tracking_hours: null | any
},
type: string,
): number | null {
if (company.tracking_hours) {
if (company.tracking_hours[type]) {
const time = Number(company.tracking_hours[type].split(':')[0])
if (time) {
return time
} else {
return null
}
}
return null
}
return null
}
我怎樣才能any用它的實際型別替換?
uj5u.com熱心網友回復:
這可以通過
- 為
Company - 用于
keyof指示正??確的型別type
const company = {
tracking_hours: {
open: "8:00",
close: "20:00",
},
};
interface Company {
tracking_hours: {
open: string;
close: string;
};
}
function setTime(
company: Company,
type: keyof Company["tracking_hours"]
): number | null {
const time = Number(company.tracking_hours[type].split(":")[0]);
return time ?? null
}
setTime(company, "open");
setTime(company, "close");
請注意,我已經簡化了您的一些代碼,因為
- 您不需要檢查
company.tracking_hoursor的存在company.tracking_hours[type]- TypeScript 保證它們將始終存在,因為函式簽名中已指定型別 - 您只需要
return null一次,因為所有其他情況都會從相應的塊中退出,并且無論如何都會到達最終的 return 陳述句。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/433049.html
下一篇:從另一個鍵的值中獲取物件的值
