Edu*_*rdo 1 javascript typescript
我有两个变量:
let locals
let visitants
Run Code Online (Sandbox Code Playgroud)
它们中的每一个都可以是PlayerDto或类型TeamDto。类型将取决于名为 的第三个变量competitor_type。如果competitor_type是player,那么我需要将玩家列表分配给locals和visitants,其他方式分配给团队列表。
我正在使用“任何”解决它
locals: any
teams: any
Run Code Online (Sandbox Code Playgroud)
有更好的方法解决吗?
您应该将不同的版本包装在一个对象中,以便能够缩小类型范围:
let state: {
type: "player";
locals: PlayerDto[] | undefined;
visitants: PlayerDto[] | undefined;
} | {
type: "team";
locals: TeamDto[] | undefined;
visitants: TeamDto[] | undefined;
} = { type: "player" };
Run Code Online (Sandbox Code Playgroud)
那么你的代码始终是类型安全的:
if(state.type === "player") {
state.locals // is of type PlayerDto[]
}
state.locals // is of type PlayerDto[] | TeamDto[]
Run Code Online (Sandbox Code Playgroud)
要更改类型,请执行以下操作:
state = { type: "team" };
Run Code Online (Sandbox Code Playgroud)
那么你可以重新分配state.locals和state.visitants。
| 归档时间: |
|
| 查看次数: |
2679 次 |
| 最近记录: |