在Ember CLI应用中何处添加自定义TypeScript类型定义?
在Ember+TypeScript中定义自定义类型Foobar的正确方式
嘿,我来帮你搞定这个自定义类型的问题~在Ember 3.0.4搭配TypeScript的项目里,你完全可以自己定义Foobar类型,下面是具体的步骤和最佳实践:
1. 选择合适的类型存放位置
最推荐的方式是在项目根目录下创建一个专门的types文件夹,用来存放所有全局或复用的自定义类型声明。如果你的项目还没有这个目录,直接新建一个就行。
2. 创建类型声明文件
在types文件夹里新建一个foobar.d.ts文件(.d.ts是TypeScript专门用来存放类型声明的后缀,TS会自动识别这类文件),然后在里面定义你的Foobar类型:
// types/foobar.d.ts // 如果你是用接口定义(推荐用于需要扩展的类型) export interface Foobar { id: number; name: string; // 这里根据你的实际需求添加属性,比如: description?: string; // 可选属性 } // 或者用类型别名(适合简单的、不需要扩展的类型) // export type Foobar = { // id: number; // name: string; // };
3. 在业务文件中导入并使用类型
回到你需要使用Foobar的文件(比如组件、路由),先导入这个类型,然后就可以正常标注了。另外要注意:Ember的this.get()方法默认返回any类型,所以需要用类型断言告诉TS它的实际类型:
// 比如你的组件文件 app/components/my-component.ts import { Foobar } from '../../types/foobar'; // 路径根据你的文件位置调整 // 然后在代码里使用: const myMar: Foobar = this.get('thePropOfTypeFoobar') as Foobar;
额外小提示
- 如果
Foobar是和某个Ember模型绑定的,你也可以直接在app/models/foobar.ts里定义模型类,其他地方直接导入这个模型类作为类型使用,这样更贴合Ember的结构。 - 检查下你的
tsconfig.json,确保include数组里包含了"types/**/*.d.ts",这样TS才能扫描到你的自定义类型(ember-cli-typescript的默认配置一般已经加了,但如果没生效的话可以手动添加)。
内容的提问来源于stack exchange,提问作者givanse
相关产品推荐
相关产品推荐

