You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:28:01