初学 TypeScript 遇到几个问题和疑惑:
static
和私有类字段前缀 #
互斥;private
和 #
定义的属性的行为差异,前者开发时提示,编译后类外部仍可以访问该属性,类似伪私有属性,后者任何时候都不能在类外部访问。对于问题 2 和问题 3,我能结合 JS 求同存异,对于问题 1,是我最不能理解的一点。TypeScript 作为 JavaScript 的超集,在我未正式接触的感知中,我一直以为祂是完全兼容 JS 语法或者说直觉祂是对 ES 规范的一种更强大的实现,问题 1 语法在高版本浏览器即使不借助 Babel
编译转化也可以正常执行,TS 却不支持,这是我标题的想要表达疑惑所在,想请问有没有具体的解决方案或者进程中的提案。
我的方案(目前测试项目是基于 rollup 构建的):
rollup & Babel 生态支持伪 TypeScript [ Done ]
借助 Babel 的预设或者插件可以解决问题一,但这是会丧失 type check
,这显然违背了使用 TS 的初衷,不到万不得已本人并不想采用此方案;
rollup & TypeScript [ TODO ]
使用了 rollup 的 TypeScript 插件,其中在 TS 编译之前转化代码的 before
钩子配置,我尝试使用 Babel
的编译功能作为 TS 编译的前置钩子,也就是在 TS 真正编译之前先让 Babel
转化 static #propName
语法,然后再让 TS 编译,目前是理论阶段,因为我的工厂函数失效了,不知道有没有大佬尝试过 before
转化这种 rollup
的 TS 插件配置,请问此思路是否存在可行性。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.