什么是类型别名以及如何在 Typescript 中创建它?
在 Typescript 中,类型别名为类型赋予了新名称。它们与接口相似,因为它们可用于命名原语以及您必须手动定义的任何其他类型。别名并不能真正创建新类型;相反,它为该类型提供了一个新名称。给基元起别名不是很实用,因为使用基元类型很容易,但是,它可以用于文档目的。类型别名只是为类型提供另一个名称。让我们演示几个关于类型别名的示例。
示例 1:创建类型别名
在本例中,我们创建了一个名为 type_alias 的类型别名。新类型是数字、字符串和布尔值的联合。如果使用该类型声明了新变量,则可以为新变量指定仅属于 number、 字符串或 boolean 类型的值。
Javascript
// A new type is created
type type_alias = number | string | boolean;
// Variable is declared of the new type created
let variable: type_alias;
variable = 1;
console.log(variable);
variable = "geeksforgeeks";
console.log(variable);
variable = true;
console.log(variable);
Javascript
// A new type is created
type type_alias = number | string | boolean;
// Variable is declared of the new type created
let variable: type_alias;
variable = function () {};
Javascript
// A new type is created
type anotherType = number | string;
let variable: string;
function displayId(id: anotherType) {
if (typeof id === typeof variable) {
return "my id is : " + id;
}
return "my id is : " + `${id.toString()}`;
}
// Argument of type string is passed into the functiom
console.log(displayId("AF565"));
// Argument of type number is passed into the function
console.log(displayId(565));
Javascript
// A new type is created
type otherType = "yes" | "no";
let variable: otherType;
variable = "yes"; // no error
console.log(variable);
variable = "neither"; // error
console.log(variable);
输出:
1
geeksforgeeks
true
这里我们尝试给一个类型为函数的变量,typescript 编译器报错。
Javascript
// A new type is created
type type_alias = number | string | boolean;
// Variable is declared of the new type created
let variable: type_alias;
variable = function () {};
输出:
error TS2322: Type '() => void' is not assignable to type 'type_alias'.
Type '() => void' is not assignable to type 'true'.
variable = function () {};
示例 2:在函数中实现类型别名。
在本例中,我们将尝试在函数中实现类型别名。我们创建了一个名为 anotherType 的类型别名,它是数字和字符串类型的联合。函数DisplayId 可以采用 number 或字符串类型的参数。如果给出任何其他类型,则会引发错误。
Javascript
// A new type is created
type anotherType = number | string;
let variable: string;
function displayId(id: anotherType) {
if (typeof id === typeof variable) {
return "my id is : " + id;
}
return "my id is : " + `${id.toString()}`;
}
// Argument of type string is passed into the functiom
console.log(displayId("AF565"));
// Argument of type number is passed into the function
console.log(displayId(565));
输出:
my id is : AF565
my id is : 565
示例 3:字符串字面量作为类型别名。
我们可以使用字符串来代替在 union 中指定类型。创建了一个新类型,其类型别名为“yes”|“no”。只有“yes”或“no”字符串可以作为其他类型声明的变量的值。当输入其他值时,打字稿编译器会引发错误。
Javascript
// A new type is created
type otherType = "yes" | "no";
let variable: otherType;
variable = "yes"; // no error
console.log(variable);
variable = "neither"; // error
console.log(variable);
输出:
打字稿编译器引发错误:
error TS2322: Type '"neither"' is not assignable to type 'anotherType'.
variable = "neither"; // error
~~~~~~~~
执行 JavaScript 文件后:
yes
neither