javascript-是否允许TypeScript中的另一个字段初始化字段?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-是否允许TypeScript中的另一个字段初始化字段?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1377字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试在TypeScript类中执行此操作:
private _errorHappened = new Subject<SomeError>();
public errorHappened = this._errorHappened.asObservable();
我在另一个字段的内联初始化期间使用字段的值.提供的示例有效,如果我翻转这两行的顺序,则会抛出无法读取未定义错误的属性“ asObservable”.这使我认为解析器自上而下地处理类声明,并且如果您引用上面已经定义的字段,那么一切都很好.
我的问题是:这种行为可以信任吗?我的意思是,这是有记录的行为,还是现在“可以正常使用”,但不能保证将来不会中断?在其他一些语言中,这样的初始化是不可能的(您必须使用构造函数).这在打字稿中还可以吗?您可以链接到文档中的相关部分吗?
解决方法:
TypeScript的精神是具有类型的JavaScript,但会积极地将JavaScript管道中的新功能引入TypeScript编译器.因此问题就变成了:在JavaScript proposal for public class fields中,字段可以在其初始化程序中使用前一个字段的值吗?
答案是肯定的,至少目前情况如此.实例(例如,非静态)类字段初始化程序在建立之后运行(这很重要,这意味着我们可以使用它),并且它们按顺序运行.链接的草案规范语言中的详细信息.
请注意,此提议当前处于the process的第2阶段.这意味着它是草稿,并且草稿可以更改.但是如果这方面发生了变化,我会感到惊讶.它很有用,并且与其他语言的行为保持一致.
就是说,如果您想保持谨慎,可以始终将初始化推迟到构造函数中:
class Example {
private _errorHappened = new Subject<SomeError>();
public errorHappened : /* ...some type here presumably...*/;
constructor() {
this.errorHappened = this._errorHappened.asObservable()
}
}
内容总结
以上是互联网集市为您收集整理的javascript-是否允许TypeScript中的另一个字段初始化字段?全部内容,希望文章能够帮你解决javascript-是否允许TypeScript中的另一个字段初始化字段?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。