Grapeoff
@Grapeoff
В чём концепция...?

Что такое design:type в рамках метаданных в TypeScript?

В документации TypeScript о декораторах в примерах есть такая функция:

function validate<T>(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) {
  let set = descriptor.set!;
  
  descriptor.set = function (value: T) {
    let type = Reflect.getMetadata("design:type", target, propertyKey);
 
    if (!(value instanceof type)) {
      throw new TypeError(`Invalid type, got ${typeof value} not ${type.name}.`);
    }
 
    set.call(this, value);
  };
}

Тут фигурирует строчка design:type. Я вижу её постоянно, когда речь заходит о декораторах. Например, даже в исходниках NestJS помню видал. Что она означает? Означает не в плане сигнатуры метода getMetadata(), а в плане почему именно такая строка? Это какая-то очередная конвенция?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
Это то что генерирует TypeScript при включенном параметре emitDecoratorMetadata
https://www.typescriptlang.org/docs/handbook/decor...

Режим зануды

1.Декораторы - экспериментальная фишка, это значит, что Microsoft всех предупредили, что они все поменяют в любой момент без зазрения совести.
2. Декораторы в TypeScript очень сильно конфликтуют с пропозолом декораторов в ECMAScript (стандарт JS).
3. TypeScript следует стандартам ECMAScript.
4. Однажды настанет день, когда все современные проекты с TypeScript декораторами сломаются, условные Angular или Nest.js думаю это починят в разумные сроки, но большинство же получит по шапке от бизнеса...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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