TS 实现去除联合类型('123' | number | boolean | 123)中的第一项
时间: 2023-03-02 11:20:34 浏览: 608
可以使用TypeScript的内置类型操作来实现去除联合类型中的第一项。具体地,可以使用`Exclude`类型来实现。
`Exclude`类型接受两个类型参数,第一个参数是需要被排除的类型,第二个参数是待筛选的联合类型。它会返回一个新的联合类型,其中排除了第一个参数所代表的类型。
在本题中,需要排除的是字符串类型`'123'`。因此,可以使用`Exclude<'123' | number | boolean | 123, '123'>`来实现去除字符串类型`'123'`,返回的类型为`number | boolean | 123`。
示例代码如下:
```typescript
type MyType = Exclude<'123' | number | boolean | 123, '123'>;
// MyType 的类型为 number | boolean | 123
```
相关问题
Invalid prop: type check failed for prop "value". Expected Array | Object | String | Number, got Boolean with value true.
这个错误提示表明,组件的一个属性(prop)"value" 的类型检查失败了。它预期接收的数据类型是数组Array)、对象(Object)、字符串(String)数字(Number),但实际传入的是布尔值(Boolean)且值为。
要解决这问题,你可以检查代码中使用了属性的地方,保传入的值是符合预期的数据类型。如果你希望传入布尔值,可以将属性的类型检查更改为布尔类型。例如,如果你使用的是 Vue.js,可以在组件的 props 声明中将 "value" 的类型从 Array/Object/String/Number 更改为 Boolean。
不能将类型“number | boolean”分配给类型“number”。 不能将类型“boolean”分配给类型“number”。ts(2322)
这个错误提示是TypeScript给出的类型不匹配的错误。它表示你试图将一个类型为"number | boolean"(即可以是数字也可以是布尔值)的值赋给一个类型为"number"的变量,或者将一个类型为"boolean"的值赋给一个类型为"number"的变量,这是不允许的。
为了解决这个问题,你需要确保将正确的类型赋给变量。你可以使用条件语句或类型断言来处理这种情况。以下是一些可能的解决方案:
1. 使用条件语句:
```typescript
let value: number | boolean;
if (typeof value === "number") {
// 处理数字类型的情况
} else {
// 处理布尔类型的情况
}
```
2. 使用类型断言:
```typescript
let value: number | boolean;
let numberValue: number = value as number; // 或者使用<number>value
```
请根据你的实际需求选择适合你的解决方案。