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

使用@ctrl/ngx-emoji-mart遇类型错误:string无法赋值给指定枚举类型

问题描述

在项目中使用@ctrl/ngx-emoji-mart包时,Stackblitz环境下运行正常,但将代码复制到本地系统后,出现以下类型错误:

Type 'string' is not assignable to type '' | "apple" | "google" | "twitter" | "facebook"'.

16 set="{{ set }}"

解决方法

这个问题核心是本地项目的TypeScript类型校验比Stackblitz更严格导致的,以下是几种可行的解决方式:

  • 直接指定变量类型
    在组件的TS文件里,把set变量的类型明确声明为包要求的联合类型,避免TS把它识别为宽泛的string类型:
// 示例:在组件类中定义
set: '' | 'apple' | 'google' | 'twitter' | 'facebook' = 'apple';
// 如果是动态获取的值,用类型断言转换
this.set = yourDynamicValue as '' | 'apple' | 'google' | 'twitter' | 'facebook';
  • 改用属性绑定语法
    模板里不要用插值表达式{{ set }},换成Angular的属性绑定[set]="set",这样框架会自动处理类型匹配,绕过字符串插值带来的类型丢失问题:
<!-- 错误写法 -->
set="{{ set }}"
<!-- 正确写法 -->
[set]="set"
  • 临时放宽TS检查(不推荐)
    如果暂时不想调整代码,可以修改tsconfig.json降低类型检查严格度,但这种做法会忽略其他潜在的类型问题,仅作为临时方案:
{
  "compilerOptions": {
    "strict": false,
    "strictNullChecks": false
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:24:22