typescript 类构造函数参数推断为 any

导管素

让我们分析下面的代码片段:

class Human {
    private name: string;
    constructor(name){
        this.name = name;
    }
}

let h = new Human(5)

上面的代码不会抛出任何错误。我希望它在构造函数调用中抛出,我在那里传递5.

似乎构造函数的name参数被推断为any,其中,静态地很容易发现我将其分配给private name: string.

问题是:TypeScript 允许5在这里使用的任何特殊原因- 或者换句话说 -name推断为any,在这种情况下很明显它必须是一个字符串?

我知道我可以做另一个这样的类定义:

class Human {
    constructor(
        private name: string
    ){}
}

但是这里我指定了参数类型,所以这里没有推论。我可以用同样的方式:

class Human {
    private name: string;
    constructor(name: string){
        this.name = name;
    }
}

也不会有任何推论。我的问题是关于推理 - 为什么它会这样工作。

萨拉瓦纳

有一个特定的编译器选项noImplicitAny专门用于解决此问题。没有"noImplicitAny": true,您name被推断为any因此当 anumber被传递时它不会抱怨

为什么它以这种方式工作?

看到这个这个

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果您声明参数类型,TypeScript函数实现会将参数类型降级为“ any”

分配Typescript构造函数参数

如何避免在TypeScript,Angular2的派生类中重复基类构造函数参数?

声明构造函数以从TypeScript中的(keyof)参数正确推断泛型

Typescript无法为函数对象推断正确的参数类型

推断TypeScript中的函数参数

派生类中的Typescript推断函数参数

Typescript使用条件类型推断构造函数参数

如何将TypeScript构造函数参数属性与类继承和超类构造函数结合使用?

在TypeScript中将任意函数参数推断为对象或元组类型

是否有一个TypeScript`Partial <any>`类型的函数参数接受`any`但为`void`?

Typescript传递枚举类构造函数参数

使TypeScript推断高阶函数的模板参数

TypeScript推断类型构造函数中的回调返回类型

TypeScript:将此多态并推断通用函数参数

从枚举参数推断Typescript函数返回类型

TypeScript中的类构造函数中的可选参数

构造函数作为参数:推断类的泛型为函数

TypeScript-如何从构造函数输入参数中推断类型信息?

TypeScript:从构造函数签名中推断函数参数

带有静态方法的Typescript通用类构造函数参数

是否可以从 Typescript 中的非构造函数方法参数推断泛型类类型?

TypeScript 中的类构造函数参数

<any> 在 Typescript 类构造函数参数前面是什么意思?

函数的类型推断作为 Typescript 中的参数

Typescript 构造函数类未按预期运行,“预期为 0 个参数”

TypeScript:为类构造函数创建函数包装器

类型被推断为 any with find moongose typescript

在 TypeScript 中,为什么当 noImplicitAny 为 true 时将空数组推断为“any[]”,而当它为 false 时推断为“never[]”?