void
void这种数据类型和any是相反的,any表示的是所有的数据类型都可以,特点是我们只能为他赋值为undefined和null
let test:void = undefined
let test:void = null
Null和Undefined
注意:null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
联合类型
联合类型可以帮我们定义多种类型,这样就可以赋值多张数据类型的值了
var somThing: number | string;
somThing = "str"
somThing = 123
函数
//普通函数
// function add(x, y) {
// return x + y;
// }
//为函数定义类型
function add(x: number, y: number): number {
return x + y;
}
例子:
函数的参数
在ts中当我们给函数定义了参数的时,那么我们就要按照预期定义的参数的个数和类型进行传值,不然会出错
function buildName(firstName: string, lastName: string) {
return firstName + " " + lastName;
}
let result1 = buildName("Bob"); // error, too few parameters
let result2 = buildName("Bob", "Adams", "Sr."); // error, too many parameters
let result3 = buildName("Bob", "Adams"); // ah, just right
JavaScript里,每个参数都是可选的,可传可不传。 没传参的时候,它的值就是undefined。 在TypeScript里我们可以在参数名旁使用 ?实现可选参数的功能。 比如,我们想让last name是可选的:
function buildName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
else
return firstName;
}
let result1 = buildName("Bob"); // works correctly now
let result2 = buildName("Bob", "Adams", "Sr."); // error, too many parameters
let result3 = buildName("Bob", "Adams"); // ah, just right
注意:可选参数必须跟在必须参数后面。 如果上例我们想让first name是可选的,那么就必须调整它们的位置,把first name放在后面
剩余参数
在js里面可以使用 arguments来访问所有传入的参数,在ts里面可以把所有参数收集到一个变量里,通过这样的方式访问剩余参数
例子:
function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");