背景
在 typescript 文档 的映射类型部分,给出了以下示例:
type Proxy<T> = {
get(): T;
set(value: T): void;
}
type Proxify<T> = {
[P in keyof T]: Proxy<T[P]>;
}
function proxify<T>(o: T): Proxify<T> {
// ... wrap proxies ...
}
let proxyProps = proxify(props);
我不太清楚如何编写proxify函数。
我需要它的原因
我有以下类型:
interface User extends BaseRecord {
readonly 'id': number;
readonly 'name'?: string;
}
interface FormField<T> {
readonly value: T;
readonly edited: boolean;
}
type WrappedInFormField<T> = {
[P in keyof T]: FormField<T[P]>;
};
我需要编写一个带有以下签名的函数
const wrap = <T>(o: T): WrappedInFormField<T> => {
// ...What goes here?...
}
wrappedUser: WrappedInFormField<User> = wrap<User>(UserIJustGotFromApi);
我该如何做到这一点?