官术网_书友最值得收藏!

Union types and type aliases

A union type describes a value that can be one of many types. The vertical bar | is used as separator for each type the value can have. For instance, number | string is the type of a value that can be a number or string. For such values, we can only access members that are common to all types in the union. The following code works because the length property exists on both strings and arrays:

var value: string | string[] = 'some';
let length = value.length;

The next code snippet gives an error because the model property does not exist on the Bike type:

interface Bike {
gears: number;
}

interface Car {
gears: number;
model: string;
}

var transport: Bike | Car = {gears: 1};
transport.model = "Audi"; // compiler error

Type alias is used as alternative name for the existing type or combination of types. It doesn't create a new type. A type alias begins with the type keyword.

type PrimitiveArray = Array<string|number|boolean>;
type Callback = () => number;
type PrimitiveArrayOrCallback = PrimitiveArray | Callback;

Type aliases can be used for better code readability, for example, in the function parameter list.

function doSomething(n: PrimitiveArrayOrCallback): number {
...
}

Type aliases can also be generic and make tricky types, which can not be made with interfaces.

主站蜘蛛池模板: 阿坝| 樟树市| 建湖县| 垣曲县| 宜兰市| 夏津县| 大同县| 明溪县| 金塔县| 赤峰市| 罗定市| 揭西县| 阿拉善盟| 南开区| 蓝山县| 迭部县| 赣榆县| 呼伦贝尔市| 瑞丽市| 尖扎县| 五峰| 万安县| 垦利县| 信宜市| 沙坪坝区| 安康市| 荣昌县| 江阴市| 莱阳市| 唐海县| 马关县| 澄江县| 张家港市| 泗水县| 天门市| 嘉善县| 武威市| 龙川县| 阜南县| 曲靖市| 河源市|