什么时候需要在 TypeScript 中声明 return 函数类型?
When is it necessary to declare return function type in TypeScript?
如果我有下面的基本函数typescript
可以自动推断出return类型
function myFunction(x: number, y: number) {
return x * y;
}
是否只有在 typescript
无法推断 return 类型时声明 return 类型才有用,因为其他一些调用正在泄漏 any
因此它无法做出正确的选择推论?
function myFunction(x: number, y: number) {
return x * y || callThatReturnsAny();
}
在这种情况下,如果我知道 callThatReturnsAny()
return 是 number
,我想输入它
function myFunction(x: number, y: number): number {
return x * y || callThatReturnsAny();
}
尽管最好的解决方案是键入 callThatReturnsAny()
以便 typescript
可以进行推断?但在那种情况下,你什么时候应该真正使用显式 return 类型?
我打开 noImplicitAny
并避免在几乎所有情况下添加类型注释,函数除外。为什么?因为我不想不小心 return 联合类型 when:
- 我忘记return一个值
- 我return一个错误类型的值
例如,如果我从以下方面开始,我的一天会有所不同:
function example(a: number, b: number) {
对
function example(a: number, b: number): number {
接下来会发生什么...
function example(a: number, b: number) {
if (a > 5) {
return 5;
}
if (b > a) {
return 'b';
}
}
我的 return 类型现在是 number | string | undefined
。
如果我使用 return 类型注释,我会得到额外的帮助*。
它可以帮助您 return 正确输入:
在严格模式下,它确保你每次都return一些东西。
* 如果您需要额外的帮助,您还可以打开所有严格的东西。
如果我有下面的基本函数typescript
可以自动推断出return类型
function myFunction(x: number, y: number) {
return x * y;
}
是否只有在 typescript
无法推断 return 类型时声明 return 类型才有用,因为其他一些调用正在泄漏 any
因此它无法做出正确的选择推论?
function myFunction(x: number, y: number) {
return x * y || callThatReturnsAny();
}
在这种情况下,如果我知道 callThatReturnsAny()
return 是 number
function myFunction(x: number, y: number): number {
return x * y || callThatReturnsAny();
}
尽管最好的解决方案是键入 callThatReturnsAny()
以便 typescript
可以进行推断?但在那种情况下,你什么时候应该真正使用显式 return 类型?
我打开 noImplicitAny
并避免在几乎所有情况下添加类型注释,函数除外。为什么?因为我不想不小心 return 联合类型 when:
- 我忘记return一个值
- 我return一个错误类型的值
例如,如果我从以下方面开始,我的一天会有所不同:
function example(a: number, b: number) {
对
function example(a: number, b: number): number {
接下来会发生什么...
function example(a: number, b: number) {
if (a > 5) {
return 5;
}
if (b > a) {
return 'b';
}
}
我的 return 类型现在是 number | string | undefined
。
如果我使用 return 类型注释,我会得到额外的帮助*。
它可以帮助您 return 正确输入:
在严格模式下,它确保你每次都return一些东西。
* 如果您需要额外的帮助,您还可以打开所有严格的东西。