type和interface 声明联合类型
时间: 2024-09-28 10:13:20 浏览: 36
在TypeScript等静态类型的编程语言中,“type”和“interface”都可以用于声明类型,但它们的目的和用途略有不同。
**Type**: 类似于其他语言中的枚举或常量类型,TypeScript的type声明是用来创建新类型名,可以是简单的基本类型(如string、number)的别名,也可以是更复杂的联合类型(union types)或者是自定义类型约束(比如最小长度、最大值等)。Type不能有实现的行为,主要用于类型检查和文档。
**Interface**: TypeScript中的接口是一种更为抽象的概念,它定义了一组属性和方法(可以是可选或必填),但不提供具体的实现。接口常用于描述对象应该如何结构化,允许你在函数签名、类定义和其他类型中引用,以确保一致性。当某个对象满足接口的要求时,我们说这个对象实现了该接口。
两者结合时,可以使用联合类型(`type`)定义一组可能的类型,并用这些类型作为接口的一部分,这样就可以限制接口接受的实例需要属于这组类型之一。例如:
```typescript
type Shape = 'circle' | 'rectangle';
interface ShapeProperties {
type: Shape;
color: string;
}
let myShape: ShapeProperties = { type: 'circle', color: 'blue' };
```
在这个例子中,`ShapeProperties`接口期望的`type`属性只能是`'circle'`或`'rectangle'`。
阅读全文