23
Июл
2021

TypeScript не видит symbol-свойства

... при этом Symbol прекрасно работает с интерфейсами.

const symbol_property = Symbol()

type SomeType = { prop: number }

interface SomeInterface {
  normal_property: SomeType | null
  [symbol_property]: SomeType | null
}

class Some implements SomeInterface {

  normal_property: SomeType | null = null;
  [symbol_property]: SomeType | null = null;

  normal():number | null {
    if (!this.normal_property) return null
    return this.normal_property.prop++
  }

  symbol(): number | null {
    if (!this[symbol_property]) return null
    return this[symbol_property].prop++
    // error -> Object is possibly 'null'
  }

  fun(): number | null {
    const sp = this[symbol_property]
    if (!sp) return null
    return sp.prop++
  }

}

Playground

Это вообще возможно как-то исправить?
TypeScript - 4.4.0-dev.20210601

Источник: https://ru.stackoverflow.com/questions/1308244/typescript-%D0%BD%D0%B5-%D0%B2%D0%B8%D0%B4%D0%B8%D1%82-symbol-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0

Тебе может это понравится...

Добавить комментарий