如何将不可变类型的对象作为参数传递给函数

interface ImmutableObject<T> {
  get<K extends keyof T>(name: K): T[K],
  set<S>(o: S): Immutable<T & S>,
  "value1": string,
}

function(values: ImmutableObject) {
//.. doo stuff
}

我有个错误
“ImmutableObject”需要1个类型参数。

最佳答案

ImmutableObject是一个通用接口。对象的实际数据由T参数决定。您需要为不可变对象指定T参数

interface ImmutableObject<T> {
  get<K extends keyof T>(name: K): T[K],
  set<S>(o: S): Immutable<T & S>,
}

function foo(values: ImmutableObject<{ value1: string }>) {
  values.get('value1')
}

10-05 23:41