Skip to content

类型别名

我们一直在通过直接在类型注释中编写对象类型和联合类型来使用它们。这很方便,但是想要多次使用同一个类型,并用一个名称来引用它是很常见的。

一个类型别名正是一个名称为任何类型的定义。类型别名的语法是:

typescript
type Point = { 
  x: number; 
  y: number; 
};

// 与前面的示例完全相同 
function printCoord(pt: Point) { 
  console.log("坐标x的值是: " + pt.x); 
  console.log("坐标y的值是: " + pt.y); 
}

printCoord({ x: 100, y: 100 });

实际上,你可以使用类型别名为任何类型命名,而不仅仅是对象类型。例如,类型别名可以命名联合类型:

typescript
type ID = number | string;

请注意,别名只是别名 - 你不能使用类型别名来创建相同类型的不同“版本”。当你使用别名时,就像你编写了别名类型一样。换句话说,这段代码可能看起来不合法,但根据 TypeScript 是可以的,因为这两种 类型都是同一类型的别名:

typescript
type UserInputSanitizedString = string; 

function sanitizeInput(str: string): UserInputSanitizedString { 
  return str.slice(0, 2) 
}

// 创建经过 sanitize 的输入 
let userInput = sanitizeInput('hello'); 

// 但仍可以使用字符串重新分配值 
userInput = "new input";