В документации 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()
, а в плане почему именно такая строка? Это какая-то очередная конвенция?