我在我的角度项目中在utils-> Constants.ts中使用以下代码。
Constants.ts
export class Constants {
static readonly LOCAL_STORAGE = 'LOCAL_STORAGE';
static readonly SESSSION_STORAGE = 'SESSSION_STORAGE';
}
我收到错误消息:重复的标识符只读。 (属性)Constants.readonly:字符串。,而我将光标置于只读状态。
和 [ts]'='。 [ts]找不到名称LOCAL_STORAGE。,当我将光标放在LOCAL_STORAGE上。
因此,当我尝试从另一个ts文件中的session_storage检索某些数据时,例如l et mobileNo = this.db.get(Constants.SESSSION_STORAGE,Constants.MOBILE_NO); 我正面临以下问题错误。
属性“ SESSION_STORAGE”在类型“ typeOf Constants”上不存在。
有人可以帮我解决这个错误。
答案 0 :(得分:1)
好像您正在尝试创建字符串枚举。 TypeScript 2.4现在具有字符串枚举,因此您的代码可以正常工作:
enum E {
hello = "hello",
world = "world"
};
或对于早期版本的TypeScript:
export const Enum = createStringEnum(["Prop1", "Prop2"]);
export type Enum = keyof typeof Enum;
function createStringEnum<T extends string>(keys: T[]): {[K in T]: K} {
return keys.reduce((res, key) => {
res[key] = key;
return res;
}, Object.create(null));
}
createStringEnum返回一个对象,该对象的键和值作为在数组中传递的字符串。
和keyof typeof Enum;
等效于“ Prop1” | “ Prop2”。
这样,您可以使用Enum验证类型并访问对象内部的字符串值。
答案 1 :(得分:1)
好像readonly
属性是在2.0版打字稿中引入的。
检查您安装的打字稿版本至少为2.0。
在新的stackblitz项目中使用您的课程,我没有任何问题。 https://stackblitz.com/edit/stackoverflow-54596178