注解
一、函数体
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);