传递给一个函数的参数个数必须与函数期望的参数个数一致。
参数类别:
- 必须参数
- 可选参数 :可选参数必须在参数后面。
- 默认参数 :当用户没有传递这个参数或传递的值是
undefined
时。 它们叫做有默认初始化值的参数
与普通可选参数不同的是,带默认值的参数不需要放在必须参数的后面。 如果带默认值的参数出现在必须参数前面,用户必须明确的传入 undefined
值来获得默认值。
function buildName(firstName = "Will", 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"); // okay and returns "Bob Adams" let result4 = buildName(undefined, "Adams"); // okay and returns "Will Adams"
1、TypeScript函数可以创建有名字的函数和匿名函数。
// Named function function add(x, y) { return x + y; } // Anonymous function let myAdd = function(x, y) { return x + y; };
函数类型:为函数定义类型
function add(x: number, y: number): number { return x + y; } let myAdd = function(x: number, y: number): number { return x + y; };
书写完整函数类型
let myAdd: (baseValue: number, increment: number) => number = function(x: number, y: number): number { return x + y; };
函数类型包含两部分:参数类型和返回值类型。
只要参数类型是匹配的,那么就认为是有效的函数类型,而不在乎参数名是否正确。
如果函数没有返回任何值,你也必须指定返回值类型为 void
而不能留空。
推断类型
尝试这个例子的时候,你会发现如果你在赋值语句的一边指定了类型但是另一边没有类型的话,TypeScript编译器会自动识别出类型:
/ myAdd has the full function type let myAdd = function(x: number, y: number): number { return x + y; }; // The parameters `x` and `y` have the type number let myAdd: (baseValue: number, increment: number) => number = function(x, y) { return x + y; };
这叫做“按上下文归类”,是类型推论的一种。 它帮助我们更好地为程序指定类型。