TypeScript — Considerations and Limitations

DEX475 - JavaScript

📄 第 175 页 🎬 视频课程

课程章节介绍

同学你好,今天我们来讲一个在LWC中用TypeScript开发时必须掌握的知识点,就是五个关键的考虑因素。这些东西如果你提前不知道,后续开发很容易踩坑,甚至造成生产事故。下面我就一个一个帮你拆解清楚。 先说第一点,,TypeScript版本的管理是完全由你自己负责的,。Salesforce平台不会帮你安装、配置,也不会自动升级TypeScript版本。也就是说,你的项目该用哪个版本、该怎么编译,全都得你自己在本地的开发环境中搞定。平台只认编译好的JavaScript代码。 第二点,既然平台不认TypeScript源文件,那就意味着,你必须使用源代码管理,。TypeScript源文件永远不会被部署到Salesforce平台上,也绝不会被存储在那里。能上生产只有编译后的JavaScript。所以你的源码版本控制非常重要,不然源文件丢了,就等于丢了原始设计。 接下来第三点,这个很多人都会犯错,就是,非空断言,代码里那个感叹号,一定要谨慎使用,。你平时可能会在`this.template`或者`Element.shadowRoot`后面加个感叹号,告诉编译器“这个肯定不是空的”。但要注意,这两个属性仅在组件运行在Shadow DOM模式下才能保证不空。一旦你组件改成Light DOM模式,它们就变成可空的了,你断言成非空就会直接导致运行时错误。所以用感叹号时一定要确认好自己组件的DOM模式。 再看第四点,关于装饰器。目前LWC的装饰器实现有个限制:,你在使用任何装饰器的时候,必须在这一行上面加`// @ts-ignore`或者`// @ts-expect-error`注释,。因为现在TypeScript的`experimentalDecorators`配置必须设为`false`,否则编译不过。这会带来一些麻烦,但Salesforce团队正在努力解决,会在正式发布版本之前把这个痛点处理掉,目前我们先这么用着。 最后第五点,我们要了解,当前不支持哪些用例,,以免白白浪费时间。首先,Salesforce CLI还没有集成好TypeScript的支持,很多自动化流程得自己搭。其次,TypeScript的源映射调试现在还无法直接进行,所以你调试的时候看到的其实是编译后的JavaScript,而不是你写的TypeScript代码。再有,非Salesforce相关的类型定义也不支持,想用第三方库的类型可能会碰壁。最后,自定义Salesforce对象和字段的类型定义目前也还没有现成的生成方式,需要自己手动维护。 这几个点都很关键,你可以在实际项目中记下来,我们后续课程还会结合实际代码来演示,确保你真的理解了。记住,用TypeScript写LWC,多留个心眼,开发体验就会顺畅很多。

关键词

LWC Lightning Web Components Salesforce