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

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.

主站蜘蛛池模板: 绥德县| 驻马店市| 宝鸡市| 合川市| 江都市| 革吉县| 台安县| 龙口市| 洛南县| 临江市| 罗江县| 榕江县| 道真| 黎城县| 汤阴县| 苍梧县| 岐山县| 临沧市| 红桥区| 霍州市| 靖西县| 义马市| 栾川县| 滨海县| 元阳县| 重庆市| 寿宁县| 双峰县| 镇康县| 永靖县| 元谋县| 中山市| 苏尼特右旗| 江都市| 米泉市| 云龙县| 镇雄县| 阳江市| 怀集县| 六枝特区| 石嘴山市|