Salesforce Lightning Types & Ambient Modules

DEX475 - JavaScript

📄 第 174 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊聊LWC TypeScript开发中的一个重要小伙伴——,@salesforce/lightning-types, 这个包。 你可以把它想象成一个,类型定义的中央图书馆,。我们在写LWC的时候,如果用TypeScript,就需要知道各种组件、模块长什么样,有哪些方法、属性。这个包就是专门为LWC准备的官方类型说明,就像一本详细的说明书,告诉TypeScript:“嘿,这个lightning-button组件有个variant属性,可以传‘brand’、‘neutral’这些值。” 现在这个包还在,开发人员预览阶段,,所以里面的类型还不是特别全,但团队正在不断地往里面加新的定义,就像图书馆在不停地进新书。 你可能会发现,用VS Code写LWC时,即使没装这个包,有些模块也有类型提示。这是因为,VS Code的Salesforce扩展包,自动帮你生成了临时的类型定义,比如`lwc`、`@salesforce/apex`、`@salesforce/schema`和`lightning/mailService`这些核心模块。但目前这些自动提示只是“临时借用”的,等预览结束,这些定义就会正式搬迁到`@salesforce/lightning-types`这个中央图书馆里。到时候扩展包就不再自己生成临时类型,而是都从图书馆里取。 如果你的开发环境没有用VS Code,或者你想自己完全掌控类型定义,那就需要手动设置。步骤很简单: 1. 先安装这个包,就像去图书馆领一张借书卡; 2. 然后创建一个声明文件,把图书馆的卡激活一下; 3. 最后在项目的`tsconfig.json`里配好路径映射,告诉TypeScript:“遇到这些模块名,请到图书馆里去找它们的说明。” 这里要特别提一下,,Lightning基础组件,,比如`lightning/button`,它们自己就带着类型定义,用起来就很方便,编辑器直接就能智能提示。但如果你的项目里用了一些,第三方组件,或者,自己封装的组件,,它们可能还没有类型定义,那该怎么办呢? 这种情况你可以用TypeScript的,环境模块声明,来自己描述这个组件长什么样。比如写一个`.d.ts`文件,用`declare module`来定义组件的类、公共方法、属性等。这样你就相当于给这些组件也画了一张“说明书”,TypeScript就能看懂了。 总结一下,`@salesforce/lightning-types`是LWC TypeScript类型定义的大本营,预览期间VS Code的自动提示只是临时方案,未来都会归到这儿来。用手动项目的话,记得自己安装和配置。遇到缺类型定义的情况,就自己动手写声明,让TypeScript也能明白你的自定义组件。 这样讲清楚了吗?有什么问题随时可以问我。

关键词

LWC Lightning Web Components Salesforce