number 数字
const num: number = 1
string 字符串
const str: string = 'lenton'
boolean 布尔值
const bl: boolean = true
array 数组
const arr1: Array<number> = [] const arr2: number[] = []
Tuple 元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同
const x: [string, number] = ['lenton', 30]
enum 枚举
enum Color {Red, Green, Blue} let color: Color = Color.Red console.log(Color.Blue) // 2
手动赋值
enum Color { Red = 5, Blue = 3, Yellow = 1 } console.log(Color.Blue) // 3
void 空值 用于标识方法返回值的类型,表示该方法没有返回值
function say(): void { console.log('Hello !') }
null 表示对象值缺失
undefined 用于初始化变量为一个未定义的值
never never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值
any 变量的值会动态改变时,比如来自用户的输入,任意值类型可以让这些变量跳过编译阶段的类型检查
let x: any = 1
如果一个类型可能出现多种类型, 可以用 | 来支持多种类型
let a: number | string | string[] a = 'lenton' a = 23 a = ['lenton', 'hello']
var [变量名] : [类型] = 值;
类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型
const str: string = '1' const num: number = <any> str
any 断言,例如在window对象上添加属性
(window as any).foo = 1;
可选参数使用问号标识 ?
function fullName(firstName:string = 'lenton', lastName?: string): string { return firstName + ' ' + lastName }
参数类型不同:
function disp(arg: string): void function disp(arg: number, arg2: string): void function disp(arg: string | number, arg2?: string): void { if (typeof arg === 'string') { console.log(arg) } else { console.log('reload', arg, arg2) } } disp(1, 'lenton') // reload 1 lenton
interface Person { name: string, age: number, say: (word: string) => string } const girl: Person = { name: 'alina', age: 23, say: (arg) => { console.log(arg) return arg } } girl.say('Hello world')
declare const jQuery: (selector: string) => any;
type Name = string; type NameResolver = () => string; type NameOrResolver = Name | NameResolver; function getName(n: NameOrResolver): Name { if (typeof n === 'string') { return n; } else { return n(); } }