类型别名
type 类型别名 = (类型1 | 类型2 )[]
let 变量名: 类型别名 = [数值1,数值2,数值3]
例:
type aa = (number | string)[]
let dd: aa = [1, 2, "哈哈哈"]
函数类型
基本样式
function add(sum1 :number, sum2: number):number {
return sum1 + sum2
}
add(1,2)
表达式
var dd = (sum1: number, sum2: number): number => {
return sum1 + sum2
}
dd(1,3)
void无返回值
function dd(sum1:number,sum2: number): void {
console.log(sum1,sum2)
}
void 表示空。
可选参数
function dd(sum1?:number,sum2?: number) {
console.log(sum1,sum2)
return 1
}
注意:不想返回参数就加void.如下:
function dd(sum1?:number,sum2?: number): void {
console.log(sum1,sum2)
}
可选参数必须位于必选参数后。
对象类型
基本样式
let dd: {
//在同一行,分号隔开,换行后可以不用分号,如下
name: string
age: number
aa(): void
//箭头函数如下
//aa: ()=> void
} = {
name: "xiaoke",
age: 18,
aa(){}
}
要是aa()里面要返回参数,那么可把void换了。
可选属性
let dd: { name: string; age?: number} = {
name: " "
}
接口
接口声明类型(interface)
interface aa {
name: string
age?: number
}
let df: aa = {
name: "qwe"
}
接口不仅 “ interface ” 能声明接口类型,“ type ” 也可以,但是“ interface ” 只能声明对象接口别名。
接口继承 ( extends )
interface aa { name: string; age?: number}
interface bb extends aa {
bn: string
}
// 相当于:interface bb = { name: string; age?: number; bn: string}
// interface aa { name: string; age?: number; }
元组
当明确数组类型时,可以用元组来表示:
let sum1: [number,number ] = [1,2]
类型推论
当一开始直接给初始化值时,会根据值去判断类型,并设定类型。
如果没有初始化值,那么必须去写类型。
a = 19
//当前a就会自动声明类型为number
类型断言
通过as来指定类型,如下:
const aa = document.getElementById('link') as HTMLAnchorElement
类型查看可以去浏览器控制台输入以下
console.dir($0)
字面量类型
有明确的值使用,使用时只能用里面的值
function asa(xun: "left" | "right" | "up" | "down") {}
asa("left")
枚举类型
有明确的值使用,使用时只能用里面的值
数字枚举
//基本结构:
enum 变量名 {}//里面的值用逗号隔开
//例子:
enum aas {up, down, left, right}
function dd(sum1: aas) {}
dd(aas.down)//使"."去快捷获取
//初始枚举值(值后的没设置根据第一个值自增)
//例如:
enum aas {up = 10 , down, left, right} // 设置枚举值用等号设置
function dd(sum1: aas) {}
dd(aas.down)
字符串枚举
字符串枚举必须设置值,因为字符串不可以自增
enum aas {
up = "qqq",
down = "sdds",
left = "eses",
right = "qqwe"
}
function dd(sum1: aas) {}
dd(aas.down)
any类型(不推荐)
let dd: any = {aa: '123'}
//声明变量,不给类型,也不给默认值,会被设置为any类型
//函数参数不加类型,会被设置为any类型
造成的错误不会提示,