类型'string'不可分配给类型枚举错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型'string'不可分配给类型枚举错误相关的知识,希望对你有一定的参考价值。
我的界面如下:
export interface Preferences {
theme: Theme;
}
[Theme
被定义为枚举:
export enum Theme {
dark = 'dark',
light = 'light'
}
假设我有如下的JSON文件:
{
"theme": "light"
}
还假设我想按如下所示在服务中使用它:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { Preferences } from '../models/preferences';
import prefExample from '../../assets/preferences.json';
@Injectable({
providedIn: 'root'
})
export class MyService {
constructor(private httpClient: HttpClient) { }
getPreferences(): Observable<Preferences> {
return of(prefExample);
}
}
当我尝试运行上面的代码时,它告诉我:
Types of property 'theme' are incompatible.
Type 'string' is not assignable to type 'Theme'.
答案
尝试强制类型注释,例如:
return of(prefExample as Preferences);
另一答案
如果您确定Preferences的有效JSON数据,您可以告诉TypeScript编译器将prefExample
对象用作Preferences
,如下所示:
getPreferences(): Observable<Preferences> {
return of(prefExample as Preferences);
}
以上是关于类型'string'不可分配给类型枚举错误的主要内容,如果未能解决你的问题,请参考以下文章
键入'键:字符串; ' 不可分配给类型 'Product' Angular 7
在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。
类型'字符串|的参数用户'不能分配给'string'类型的参数