如何将Typescript不可变JS类型作为函数参数传递

时间:2018-09-27 15:02:54

标签: typescript immutable.js

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

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个类型参数。

2 个答案:

答案 0 :(得分:2)

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')
} 

答案 1 :(得分:0)

让您的函数传递不可变对象的类型参数。

/**
 * Check the Class allocated to Student
 *
 *@return void
 */
public function class()
{
    return $this->belongsToMany('App\Class', 'class_allocations');
}