[Typescript] 从字段到函数的推导

type Watcher<T> = {
  on<K extends keyof T & string>(
    eventName: `${K}Changed`,
    callback: (oldValue: T[K], newValue: T[K]) => void
  ): void;
};

declare function watch<T>(obj: T): Watcher<T>;

const personWatcher = watch({
  firstName: "Saoirse",
  lastName: "Ronan",
  age: 26,
});

personWatcher.on("ageChanged", (oldValue, newValue) => {});

 

posted @ 2025-05-06 14:06  Zhentiw  阅读(7)  评论(0)    收藏  举报