搜索词
- typescript declare property in constructor
- typescript language service declare property in constructor
建议
当在类方法中访问不存在的属性 x
时,ts language service 目前建议的一种修复方法是:
Declare property x
这将向类中添加属性 x
。
如果还能有 Declare property x in constructor arguments 就更好了。它可以默认使用 private
访问修饰符。
使用场景
虽然它通常很有用,但在开发使用构造函数注入(constructor injection)来连接依赖项的DI框架(如Angular)的应用程序时,它变得特别方便。
示例
检查清单
我的建议满足以下准则:
- 这不会对现有的TypeScript / JavaScript代码造成破坏性更改
- 这不会改变现有JavaScript代码的运行时行为
- 这可以在不根据表达式的类型发出不同的JS的情况下实现
- 这不是一个运行时特性(例如新的表达式级语法)
1条答案
按热度按时间htrmnn0y1#
当前的代码修复与
--strictPropertyInitialization
不兼容。(如果类型是any
,那么它是兼容的,但请参见 #28056 。)即使没有--strictPropertyInitialization
,它只是添加了一个属性声明,这个属性可能永远不会写在任何地方,所以它正在积极地使你的代码更不正确。因此,也许我们应该默认这样做,而不是添加一个新的选项。例外是在写访问时。应该改为:
或者,如果存在现有的构造函数,它可以添加一个新的参数。
我认为这应该默认使用
public
或readonly
,因为代码修复可能会在类之外触发。