首页 > 解决方案 > 如何使用代理类型为属性 [name , age] 设置值

问题描述

我试图弄清楚如何使用 set () 为 [age, name] 属性赋值,但它向我显示了一个错误,您可以在下面看到。

如果有办法纠正错误,我将不胜感激。

索引.ts

interface Proxy<T>{
  get(): T;
  set(value: T): void;
}

type Proxied<T> = {
  [P in keyof T]: Proxy<T[P]>;
}

interface Cat{
  age: number;
  name: string;
}


type PC = Proxied<Cat>;

const doc: PC = null;

doc.age.set(1);
console.log(doc.age.get())

错误

C:\Users\c\Desktop\typetify\src\typetify.ts:3
  set(value: T): void;
    ^
TypeError: Cannot read property 'age' of null
    at Object.<anonymous> (C:\Users\c\Desktop\typetify\src\typetify.ts:3:5)
    at Module._compile (internal/modules/cjs/loader.js:1176:30)
    at Module.m._compile (C:\Users\c\Desktop\typetify\node_modules\ts-node\src\index.ts:858:23)    
    at Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
    at Object.require.extensions.<computed> [as .ts] (C:\Users\c\Desktop\typetify\node_modules\ts-node\src\index.ts:861:12)
    at Module.load (internal/modules/cjs/loader.js:1040:32)
    at Function.Module._load (internal/modules/cjs/loader.js:929:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at main (C:\Users\c\Desktop\typetify\node_modules\ts-node\src\bin.ts:227:14)
    at Object.<anonymous> (C:\Users\c\Desktop\typetify\node_modules\ts-node\src\bin.ts:513:3)      
[nodemon] app crashed - waiting for file changes before starting...

标签: typescripttypescript-generics

解决方案


推荐阅读