MST

星途 面试题库

面试题:TypeScript属性装饰器中如何实现简单的属性监听

请使用TypeScript属性装饰器实现一个简单的属性监听功能,当被装饰的属性值发生变化时,在控制台打印出新值。假设我们有一个类`User`,其中有一个`name`属性需要监听。
48.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function propertyListener(target: any, propertyKey: string) {
    let value: any;
    const descriptor: PropertyDescriptor = {
        get() {
            return value;
        },
        set(newValue) {
            if (newValue!== value) {
                value = newValue;
                console.log(`新值: ${newValue}`);
            }
        }
    };
    return descriptor;
}

class User {
    @propertyListener
    name: string;
    constructor(name: string) {
        this.name = name;
    }
}

// 测试
const user = new User('Alice');
user.name = 'Bob';