Назначение объекта с наследованием не работает в машинописи

Я также смог воссоздать это сообщение об ошибке при использовании тега привязки со следующим href:

<a href="javascript:">Example a tag</a>

В моем случае для получения «курсора указателя» использовался тег «a», и событие фактически контролировалось некоторым событием jQuery при щелчке. Я удалил href и добавил класс, который применяется:

cursor:pointer;

3
задан Антон Тишин 4 March 2019 в 16:44
поделиться

2 ответа

Это известная проблема . Это не существует в TypeScript. Причина заключается в том, что поддержка TypeScript для create-реагировать на приложения использует TypeScript для проверки типов и Babel для транспиляции.

Этот код TS

class B extends A {
  id: string;
  ...
}

преобразуется в этот код ES.Следующий код:

class B extends A {
  id;
  ...
}

Согласно предложению поля класса , неназначенное поле id преобразован в this.id = undefined.

Чтобы использовать поведение, совместимое с TypeScript, необходимо изменить настройку, чтобы использовать @babel/plugin-transform-typescript для переноса в ES5 или использовать TypeScript вместо Babel, например, устарел react-scripts-ts.

0
ответ дан estus 4 March 2019 в 16:44
поделиться

Два возможных обходных пути:

  1. Переместить Object.assign в дочерний класс
  2. Создать фабрику, которая будет возвращать экземпляры классов:

    export interface Ctor<T> {
        new(...parts: Partial<T>[]): T;
    }

    export class Factory {
        public static Get<T extends object>(ctor: Ctor<T>, ...props: Partial<T>[]): T {
            const res = new ctor();
            Object.assign(res, ...props);
            return res;
        }
    }
0
ответ дан Антон Тишин 4 March 2019 в 16:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: