microsoft / TypeScript-Handbook

Deprecated, please use the TypeScript-Website repo instead
https://github.com/microsoft/TypeScript-Website
Apache License 2.0
4.88k stars 1.13k forks source link

Samples code in "Metadata" section of "Decorators" page is wrong #1302

Open JeffreyZhao opened 4 years ago

JeffreyZhao commented 4 years ago

Currently (with comments added to explain the issue):

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); // "target" should be "this"
        if (!(value instanceof type)) {
            throw new TypeError("Invalid type.");
        }
        set.call(target, value); // "target" should be "this"
    }
}

We should use this instead of target in those two lines with comments. I will make a PR for it later.