Дубликат идентификатора только для чтения.(свойство) Constants.readonly: строка в машинописи - PullRequest
0 голосов
/ 08 февраля 2019

Я использую приведенный ниже код в utils -> Constants.ts в моем угловом проекте.

Constants.ts

 export class Constants {
     static readonly LOCAL_STORAGE  = 'LOCAL_STORAGE';
     static readonly SESSSION_STORAGE  = 'SESSSION_STORAGE';
  }

Я получаю сообщение об ошибке: Дублированный идентификатор только для чтения.(свойство) Constants.readonly: string. пока я наведу курсор только на чтение.

И [ts] '=' ожидается.[ts] Не могу найти какое-либо имя LOCAL_STORAGE. , пока я нацеливаю курсор на LOCAL_STORAGE.

Так что, когда я пытаюсь получить некоторые данные из session_storage в другом файле ts, например l et mobileNo = this.db.get (Constants.SESSSION_STORAGE, Constants.MOBILE_NO); Я столкнулся с приведенной ниже ошибкой.

свойство 'SESSION_STORAGE' не существует в типе 'typeOf Constants' any.

Может кто-нибудь помочь мне с этой ошибкой.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Кажется, что readonly свойства были введены в версии 2.0 машинописи.Убедитесь, что у вас установлена ​​версия машинописного текста как минимум 2.0.

У меня нет проблем с использованием вашего класса в новом проекте stackblitz.https://stackblitz.com/edit/stackoverflow-54596178

0 голосов
/ 08 февраля 2019

Похоже, вы пытаетесь создать строковое перечисление.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 для проверки типа и доступа к строковым значениям внутри объекта.

...