美文网首页
TypeScript学习-- 函数(1)

TypeScript学习-- 函数(1)

作者: 鱼竿23333 | 来源:发表于2019-10-21 11:15 被阅读0次

TypeScript 函数(1)

tsc greeter.ts

函数类型
  • 为函数定义类型
function add(x: number, y: number): number {
    return x + y;
}
let myAdd = function(x: number, y: number): number { return x + y; };
// 给每个参数添加类型之后再为函数本身添加返回值类型。 TypeScript能够根据返回语句自动推断出返回值类型
  • 书写完整函数类型
let myAdd: (baseValue: number, increment: number) => number =
    function(x: number, y: number): number { return x + y; };

函数类型包含两部分:参数类型和返回值类型。 当写出完整函数类型的时候,这两部分都是需要的
在函数和返回值类型之前使用( =>)符号
返回值类型是函数类型的必要部分,如果函数没有返回任何值,你也必须指定返回值类型为 void而不能留空。

  • 推断类型
    果你在赋值语句的一边指定了类型但是另一边没有类型的话,TypeScript编译器会自动识别出类型:
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; };
可选参数和默认参数
  • TypeScript里的每个函数参数都是必须的。 这不是指不能传递 null或undefined作为参数,而是说编译器检查用户是否为每个参数都传入了值
  • 传递给一个函数的参数个数必须与函数期望的参数个数一致。
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
  • 可选参数的话,需要在参数名后加?
    可选参数必须跟在必须参数后面
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
  • 可以为可选参数提供默认值
function buildName(firstName: string, lastName = "Smith") {
    return firstName + " " + lastName;
}

let result1 = buildName("Bob");                  // works correctly now, returns "Bob Smith"
let result2 = buildName("Bob", undefined);       // still works, also returns "Bob Smith"
let result3 = buildName("Bob", "Adams", "Sr.");  // error, too many parameters
let result4 = buildName("Bob", "Adams");         // ah, just right

与普通可选参数不同的是,带默认值的参数不需要放在必须参数的后面。 如果带默认值的参数出现在必须参数前面,用户必须明确的传入 undefined值来获得默认值

剩余参数
  • 在TypeScript里,你可以把所有参数收集到一个变量里
  • 剩余参数会被当做个数不限的可选参数。 可以一个都没有,同样也可以有任意个。
  • 编译器创建参数数组,名字是你在省略号( ...)后面给定的名字,你可以在函数体内使用这个数
//ts
function buildName( ...restOfName: string[]) {
  return firstName + " " + restOfName.join(" ");
}
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
//js
function buildName() {
    var restOfName = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        restOfName[_i] = arguments[_i];
    }
    return restOfName.join(" ");
}
var employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
console.log(employeeName);

相关文章

网友评论

      本文标题:TypeScript学习-- 函数(1)

      本文链接:https://www.haomeiwen.com/subject/cxtimctx.html