声明变量要同时声明类型,例如: let foo: string = 'hello!'
类型有:
{
数字: number, //值可为number,null, undefined
字符串: string, //值可为string,null, undefined
布尔值:boolean,//值可为boolean,null, undefined
null //值只能为null
undedined //值只能为undefined
void //void可以定义没有返回值的函数,如: function hello(): void { console.log('hello)},但当一个变量定义为空(void),这个变量的值只能是null或者unfined
any // 当变量设为任意类型,对它的任何操作(包括方法以及属性)都是允许的,当我们在声明变量时,既没有赋值也没有未定义类型(并的关系),会被自动
当作any,但如果只是没定义类型,在定义的同时进行了赋值操作,typeScript会进行类型推论,指定一种类型,在整个过程中这个变量的类型将不允许再改变。
never
}
1. 定义对象Object, 使用接口interface,先定义一个类型
因此与接口Person保持一致的变量,多属性和少属性都是不允许的。
注:
(1) 但如果上边的代码 关于age的代码改为: age?: number, 则不会报错。
(2)定义可选属性: 在属性后加?,如: age?: number。
(3) 定义任意属性:如: [propName: string]: string, 一旦定义了任意属性,不论确定属性还是可选属性,都必须满足任意属性的条件,即值必须是个string。
(4)定义只读属性:在属性前加readonly,如: readonly id:number;只可以在生成my这个对象的同时给这个属性赋值,其余时机是不允许的。
2. 定义数组Array的定义方法: (1)类型[] (2)Array<类型>,这种方式也角数组的泛型(3)用接口定义数组 (4) 使用元组定义,示例如下:
l
注:
(1)定义任意类型的数组: let arr: any[] = [1, '2', {'key': 3}]
(2) 定义类数组:常见的类数组都有自己的内置对象, 因此可以通过对应的内置对象来定义,(补充:js常见的内置对象有: Boolean, Error,Date, RegExp,
DOM 以及BOM常见的内置对象:Document, HTMLElement, Event, NodeList)
3. 定义函数的方式有三种:(1)函数声明 (2) 函数表达式 (3)接口定义函数,一个函数既有输入,又有输出,因此在ts需要考虑对这这两者都进行约束。示例如下:
注:
(1) 函数多参数,少参数均是不被允许的
(2)设置可选参数,如function(a?: number, b: number) {} ,值得注意的是,在函数体内,要区分有参数a和无参数a的情况
(3)设置默认参数,如:function(a?: number = 1, b: number) {}
(4)函数重载,示例如下:
上例中,我们重复定义了多次函数 reverse
,前几次都是函数定义,最后一次是函数实现。TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果
有包含关系,需要优先把精确的定义写在前面。