跳到主要内容

注解

一、函数体

1.1 普通函数

  • 返回值为基础类型

    function foo(x:number,y:number):number{
    return x+y;
    }
  • 返回值为Promise

    async function foo():Promise<number>{
    return 1
    }

1.2 字面量函数

  • 语法一、直接注解

    const foo : (x:number,y:number) => number = (x,y)=>{
    return x+y;
    }
  • 语法二、通过type注解

    • 标准写法

      type Foo = { 
      (argu1: string, arug2: number) : number
      };

      const foo: Foo = function (argu1, argu2) {
      return argu2;
      }
    • 简介写法

      type Foo = (argu1: string, arug2: number) => number

      const foo: Foo = function (argu1, argu2) {
      return argu2;
      }
  • 语法三、通过interface注解

    interface FooType{
    (argu1:string,arug2:number):number;
    }

    const foo:FooType = function(argu1,argu2){
    return argu2;
    }

二、参数解构


  • 直接类型注解

    function foo({x,y} : {x:number,y:number}):number{
    return x+y;
    }
  • 通过type类型注解

    type ParamsType = {
    name:string;
    age:number;
    }
    function foo({name,age}:ParamsType):number{
    return age;
    }

三、剩余参数

type Foo = (argu1: string, arug2: number , ...rest: number[]) => number

const foo: Foo = function (argu1, argu2,...rest) {
console.log(rest);
return argu2;
}

console.log(foo('哈哈',3,4,5,6,7));

四、只读属性参数


如果传入一个只读数组,那么 foo(只读数组) 会报错
const array = [10,20,30] as const;
function foo(arr: number []){
console.log(arr);
}
foo(array); // Argument of type 'readonly [10, 20, 30]' is not assignable to parameter of type 'number[]'.
如果参数为可读,那么必须加上 readonly 加以限制
const array = [10,20,30] as const;
function foo(arr: readonly number []){
console.log(arr);
}
foo(array);