我有這兩種型別:
export type Equipment = {
id: string;
name: string;
path: WorkCenter[];
key?: string;
pathToElement?: string[];
machine_id?: StatesData.MachineMapping['machine_id'];
machine_codes?: StatesData.MachineMapping['machine_codes'];
timeout_s?: StatesData.MachineMapping['timeout_s'];
stateMachines?: StatesData.MachineState['machines'];
};
export type WorkCenter = {
id: string;
name: string;
children?: Equipment[];
key?: string;
pathToElement?: string[];
stateMachines?: StatesData.MachineState['machines'];
};
在我的代碼中的某一點,我得到一個變數,它可以是 型別Equipment,也可以是WorkCenter.
我如何確定它是哪個?根據它是Equipment或WorkCenter,我需要不同的邏輯來發生。
到目前為止,我接受了這一點:
args: Equipment | WorkCenter
但是想不出一個簡單的方法來測驗這是哪種型別。
這樣typeof做最有意義,但它不適用于 ts 型別,因此不起作用。我也不能只測驗僅存在于 上的屬性Equipment,因為ts會將其視為不是聯合。我錯過了什么?
uj5u.com熱心網友回復:
我也不能只測驗只存在于設備上的屬性,因為 ts 會將其視為不是聯合。
使用方括號表示法允許您進行測驗而不會出現 TS 抱怨
type TypeOne = {
path: string;
};
type TypeTwo = {
child: string;
};
const testIt = (t: TypeOne | TypeTwo) => {
console.log(t['child']);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330854.html
標籤:javascript 打字稿 类型
上一篇:如何“模擬”一個Ref?
