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

如何扩展WorkspaceJsonConfiguration的子接口ProjectConfiguration并新增字段

解决方案

你可以根据自己的使用场景选择以下两种实现方式:

方式一:局部自定义扩展类型(不会污染全局类型,推荐大多数场景使用)

你已经完成了ProjectConfiguration的扩展,只需要再对WorkspaceJsonConfiguration做扩展,替换其内部projects属性的类型即可:

import { WorkspaceJsonConfiguration, ProjectConfiguration } from '@nrwl/devkit'

// 扩展基础项目配置
interface ProjectConfig extends ProjectConfiguration {
    version: string
    date: string
}

// 扩展工作区配置,替换projects属性的类型
interface ExtendedWorkspaceConfig extends WorkspaceJsonConfiguration {
    projects: {
        [projectName: string]: ProjectConfig
    }
}

后续在你的代码中,所有用到工作区配置的位置,将类型声明替换为ExtendedWorkspaceConfig即可,此时读取projects下的任意项目配置,都会自动获得version、date两个新增字段的类型提示。

方式二:全局扩充原模块类型(全项目生效,适合统一修改所有场景的类型定义)

如果你希望整个项目内所有导入@nrwl/devkit的位置,默认就带有你新增的两个字段,可以用TypeScript的模块扩充能力实现:

// 该段代码可以放在当前文件顶部,或者项目全局的*.d.ts声明文件中
declare module '@nrwl/devkit' {
    interface ProjectConfiguration {
        version: string
        date: string
    }
}

// 后续直接导入原类型即可,无需额外自定义扩展接口
import { WorkspaceJsonConfiguration, ProjectConfiguration } from '@nrwl/devkit'

// 直接使用原WorkspaceJsonConfiguration类型,内部projects的项目配置已自动扩展两个字段
const workspaceConfig: WorkspaceJsonConfiguration = /* 你的工作区配置内容 */

内容的提问来源于stack exchange,提问作者user3142695

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:39:03