Open yaoningvital opened 4 years ago
原文地址:http://www.typescriptlang.org/docs/handbook/advanced-types.html
类型别名(Type Aliases)为一个类型创建一个新的名称。
类型别名有时比较类似于“接口”,但是它可以命名 原始类型、联合类型、元祖类型(Tuples)、和其他你必须手写的类型。
type Name = string type NameResolver = () => string; type NameOrResolver = Name | NameResolver function getName(n: NameOrResolver): Name { if (typeof n === 'string') { return n } return n() }
别名并没有实际上创建一个新的类型,它只是创建了一个新的名称来引用那个类型。
和接口一样,类型别名也可以是泛型:
type Container<T> = { value: T }
可以在一个属性中,用类型别名引用一个类型别名自身:
type Tree<T> = { value: T; left: Tree<T>; right: Tree<T>; }
总结: 1、如果interface 和 type 都可实现,尽可能地使用 interface。 2、如果用 interface 不能实现的类型描述,才用 type 别名。
原文地址:http://www.typescriptlang.org/docs/handbook/advanced-types.html
类型别名(Type Aliases)为一个类型创建一个新的名称。
类型别名有时比较类似于“接口”,但是它可以命名 原始类型、联合类型、元祖类型(Tuples)、和其他你必须手写的类型。
example 1
别名并没有实际上创建一个新的类型,它只是创建了一个新的名称来引用那个类型。
和接口一样,类型别名也可以是泛型:
可以在一个属性中,用类型别名引用一个类型别名自身:
总结: 1、如果interface 和 type 都可实现,尽可能地使用 interface。 2、如果用 interface 不能实现的类型描述,才用 type 别名。