frontend-interview icon indicating copy to clipboard operation
frontend-interview copied to clipboard

什么是可调用类型注解

Open su37josephxia opened this issue 2 years ago • 5 comments

su37josephxia avatar Mar 11 '22 11:03 su37josephxia

TypeScript提供了很多数据类型,通过类型对变量进行限制,称之为类型注解,使用类型注解后,就不能够随意变更变量的类型。

我们可以使用类型别名或者接口来表示一个可被调用的类型注解:

interface ReturnString {
  (): string;
}

它可以表示一个返回值为 string 的函数:

declare const foo: ReturnString;
const bar = foo(); // bar 被推断为一个字符串。

Tiffany-yuan avatar Mar 13 '22 14:03 Tiffany-yuan

可调用类型注解是指描述函数的类型,一般用于推断实例,多种参数组合函数的函数头。

interface foo{
  (x: string): string
  (x: number): number
}

interface bar{
  new (s: string): string
}

zcma11 avatar Mar 13 '22 14:03 zcma11

TypeScript提供了很多数据类型,类型声明空间中可用的任何内容都可以用作类型注解。

你可以使用类型别名或者接口来表示一个可被调用的类型注解。

类型别名

type flag = string | number;

function hello(value: flag) {}

接口

interface Speakable {
  speak(): void;
  readonly lng: string; //readonly表示只读属性 后续不可以更改
  name?: string; //?表示可选属性
}

let speakman: Speakable = {
  //   speak() {}, //少属性会报错
  name: "hello",
  lng: "en",
  age: 111, //多属性也会报错
};

7TingYu avatar Mar 13 '22 15:03 7TingYu

可调用的类型注解一般用于函数类型以及函数的入参和出参的限制,使用如下:

interface ReturnString {
  (): string;
}

declare const foo: ReturnString;

const bar = foo(); // bar 被推断为一个字符串。

crazyyoung1020 avatar Mar 13 '22 17:03 crazyyoung1020

可调用类型注解一般用于描述一个函数的ts类型定义,类型定义规定了函数的入参以及返回值的基本类型格式

函数的注解方式

1.函数声明的注解方式

function test(x: number, y: number): number {
  return x + y;
}

2.函数表达式的注解方式

let hello: (x: number, y: number) => number = (x, y) => x + y;

3.函数的接口注解方式

interface Fun {
  (x: number, y: number): number;
}
let world: Fun = (x, y) => x + y;

miracle-dx avatar Mar 15 '22 02:03 miracle-dx