String не совместим с перечислением String - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть этот тип:

export type BunionLevel = 'foo' | 'bar' | 'baz';

тогда у меня есть этот класс:

export class BunionLogger {

  level: BunionLevel;

  constructor(opts?: BunionOpts) {
    this.level = String((opts && (opts.level || opts.maxlevel) || maxLevel || '')).toUpperCase();
  }

}

и я получаю эту ошибку:

enter image description here

Ухххх, что я должен делать? Я не уверен, как поступить. Я могу сделать это:

this.level = <BunionLevels> String((opts && (opts.level || opts.maxlevel) || maxLevel || '')).toUpperCase();

но актерский состав кажется ненужным ...?

по запросу BunionOpts выглядит так:

export interface BunionOpts {
  level?: BunionLevel
  maxlevel?: BunionLevel
  appName?: string
  name?: string
  fields?: object
}

1 Ответ

0 голосов
/ 30 апреля 2018

Если вы используете функцию String, то результатом String((opts && (opts.level || opts.maxlevel) || maxLevel || '')) будет string, а не значение BunionLevel. Кроме того, поскольку вы предоставляете '' по умолчанию и используете toUpper, результат определенно не будет допустимой строкой для BunionLevel.

Если вы удалите String и toUpper и предоставите допустимое значение по умолчанию, все будет работать:

this.level = (opts && (opts.level || opts.maxlevel)) || 'foo';
...