TypeScript day2
TypeScript 函数
TS函数定义与JS一致,只记录下来与JS使用起来不一样的地方。本文内容参考网站TS菜鸟教程。文档搬运工,整理记录学习脚步,轻踩~
函数返回值
// 函数定义
function greet():string { // 返回一个字符串(这里可以规定返回值的类型)
return "Hello World"
}
带参数的函数
function add(x: number, y: number): number {
return x + y;
}
console.log(add(1,2))
可选参数和默认参数
可选参数
在 TypeScript 函数里,如果我们定义了参数,则我们必须传入这些参数,除非将这些参数设置为可选,可选参数使用问号标识 ?。
function buildName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
else
return firstName;
}
注意:可选参数放在必选参数的后面
默认参数
我们也可以设置参数的默认值,这样在调用函数的时候,如果不传入该参数的值,则使用默认参数。注意:参数不能同时设置为可选和默认。
function calculate_discount(price:number,rate:number = 0.50) {
var discount = price * rate;
console.log("计算结果: ",discount);
}
calculate_discount(1000) //500
calculate_discount(1000,0.30)//300
剩余参数
有一种情况,我们不知道要向函数传入多少个参数,这时候我们就可以使用剩余参数来定义。
剩余参数语法允许我们将一个不确定数量的参数作为一个数组传入。
function addNumbers(...nums:number[]) {
var i;
var sum:number = 0;
for(i = 0;i<nums.length;i++) {
sum = sum + nums[i];
}
console.log("和为:",sum)
}
addNumbers(1,2,3) //6
addNumbers(10,10,10,10,10)//50
递归函数
递归函数即在函数内调用函数本身。
function factorial(number) {
if (number <= 0) { // 停止执行
return 1;
} else {
return (number * factorial(number - 1)); // 调用自身
}
};
console.log(factorial(6)); // 输出 720
Lambda 函数(箭头函数)
单个参数括号可选,无参数设置空括号,参数类型标注不标注都可以,和JS使用箭头函数是一样一样滴~
函数重载
重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。如果参数类型不同,则参数类型应设置为 any。
参数数量不同你可以将不同的参数设置为可选。
function disp(s1:string):void;
function disp(n1:number,s1:string):void;
function disp(x:any,y?:any):void {
console.log(x);
console.log(y);
}
disp("abc")
disp(1,"xyz");
//以下是输出结果
abc
undefined
1
xyz
TypeScript Number、String、Array
TypeScript 与 JavaScript 类似,支持 Number 对象、String对象、Array 对象。详细见文档菜鸟教程
TypeScript 元组
我们知道数组中元素的数据类型都一般是相同的(any[] 类型的数组可以不同),如果存储的元素数据类型不同,则需要使用元组。
元组中允许存储不同类型的元素,元组可以作为参数传递给函数。
创建元组的语法格式如下:
var tuple_name = [value1,value2,value3,…value n]
用法和数组差不多,差别就在元组中元素的数据类型可以不同。详细可参考菜鸟教程元组
TypeScript 联合类型
联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。
var val:string|number
val = 12
console.log("数字为 "+ val)
val = "Runoob"
console.log("字符串为 " + val)
用法很简单。就是一个管道符设置变量的多种数据类型。