本人TS不是很懂,今天看到这样的代码export type Service<T, P extends any[]> = (...args: P) => Promise<T>;
对Promise<T> 这个写法不是很理解。另外总觉得Ts里像这种复杂的定义一眼很难理解,对代码的可读性是不是有些影响?
本人TS不是很懂,今天看到这样的代码export type Service<T, P extends any[]> = (...args: P) => Promise<T>;
对Promise<T> 这个写法不是很理解。另外总觉得Ts里像这种复杂的定义一眼很难理解,对代码的可读性是不是有些影响?
6 回答5.5k 阅读✓ 已解决
9 回答9.6k 阅读
5 回答3.8k 阅读✓ 已解决
4 回答8.2k 阅读✓ 已解决
7 回答10.2k 阅读
5 回答8.4k 阅读
2 回答10.5k 阅读✓ 已解决
这叫泛型。
我们来看一个 Promise 方法:
fakeRequestAsync
是一个 Promise 方法,它有参数options
,有.then
的回调参数res
。再看 TS 声明:
T
就是上面的res
,P
就是上面的options
。Promive<T>
是 ES2015 自带类型,在 TS 标准库中就有。你可以在 VSCode 里按住 Ctrl+左键,点击这个类型,就能跳转到标准库的声明文件了,你可以看下微软是怎么声明它的。