Sub*_*kha 4 arrays types conditional-statements type-declaration typescript
这是我要问的一个例子。
假设我们有两个接口,Cats并且Dogs。如何制作一个可以同时容纳Cats和 的数组Dogs?
interface Cats {
name: string;
age: number;
}
interface Dog {
owner: string;
}
const cat1: Cats = {
name: "Jimmy",
age: 5,
}
const dog1: Dogs = {
owner: "Bobby",
}
// The line below doesn't work how I think it would work
const animalsList: Array<Cats> | Array<Dogs> = [cat1, dog1];
Run Code Online (Sandbox Code Playgroud)
该变量animalsList应该能够同时包含Cats和Dogs,但我收到诸如
“类型Dogs无法分配给类型Array<Cats>”之类的错误
如果我正确地阅读这个问题,您希望能够制作一个可以同时容纳猫和狗的数组。目前的方式Array<Cats> | Array<Dogs>意味着您可以拥有 a) 只能容纳猫的数组,或 b) 只能容纳狗的数组。
要解决这个问题,您需要一个可以同时容纳两者的数组。这样做的方法如下:
public animalsList: Array<Cats | Dogs>;
Run Code Online (Sandbox Code Playgroud)
管道 ( |) 的新位置表明该数组是一个可以同时容纳猫和狗的数组。
@cherryblossom提到的另一个选择是:
public animalsList: (Cats | Dogs)[];
Run Code Online (Sandbox Code Playgroud)
其工作原理类似