Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Typescript中键入Immutable.js映射_Javascript_Typescript_Types_Immutable.js - Fatal编程技术网

Javascript 在Typescript中键入Immutable.js映射

Javascript 在Typescript中键入Immutable.js映射,javascript,typescript,types,immutable.js,Javascript,Typescript,Types,Immutable.js,我是Typescript的新手,我正在尝试强键入一个不可变映射(Immutable.js库) 类型允许值= 串| 数| 布尔值| 允许映射| 允许名单| 类型映射| 未定义; 接口AllowedList扩展列表{} 接口AllowedMap扩展映射{} 导出类型MapTypeAllowedData={ [K in keyof DataType]:允许的值; }; 导出接口类型映射扩展映射{ toJS():数据类型; get(key:K,notSetValue?:数据类型[K]):数据类型[K];

我是Typescript的新手,我正在尝试强键入一个不可变映射(Immutable.js库)

类型允许值=
串|
数|
布尔值|
允许映射|
允许名单|
类型映射|
未定义;
接口AllowedList扩展列表{}
接口AllowedMap扩展映射{}
导出类型MapTypeAllowedData={
[K in keyof DataType]:允许的值;
};
导出接口类型映射扩展映射{
toJS():数据类型;
get(key:K,notSetValue?:数据类型[K]):数据类型[K];
set(key:K,value:DataType[K]):这个;
}
const createTypedMap=(数据:数据类型):TypedMap=>Map(数据)如有;
我有这个错误

Interface 'TypedMap<DataType>' incorrectly extends interface 'Map<string, AllowedValue>'.
  Types of property 'set' are incompatible.
    Type '<K extends keyof DataType>(key: K, value: DataType[K]) => this' is not assignable to type '(key: string, value: AllowedValue) => this'.
      Types of parameters 'key' and 'key' are incompatible.
        Type 'string' is not assignable to type 'keyof DataType'.
export interface TypedMap<DataType extends MapTypeAllowedData<DataType>> 
extends Map<string, AllowedValue> {
                    ~~~~~~~~
接口“TypedMap”错误地扩展了接口“Map”。
属性“set”的类型不兼容。
Type'(键:K,值:数据类型[K])=>this'不可分配给Type'(键:字符串,值:AllowedValue)=>this'。
参数“key”和“key”的类型不兼容。
类型“string”不可分配给类型“keyof DataType”。
导出接口类型映射
扩展地图{
~~~~~~~~

我如何解决它?

错误是正确的…您的
TypedMap
的行为不像
Map
。如果我有
Map
,我应该能够调用
get(“随机字符串”)
。但是
TypedMap
只允许
get()
将使用类型为
keyof DataType
的参数调用。因此会出现错误

也许你的意思是
TypedMap
应该像
Map
那样工作

export interface TypedMap<DataType extends MapTypeAllowedData<DataType>>
  extends Map<keyof DataType, AllowedValue> { // changed here

  toJS(): DataType;
  get<K extends keyof DataType>(key: K, notSetValue?: DataType[K]): DataType[K];
  set<K extends keyof DataType>(key: K, value: DataType[K]): this;

}
导出接口类型映射
扩展映射{//在此处更改
toJS():数据类型;
get(key:K,notSetValue?:数据类型[K]):数据类型[K];
set(key:K,value:DataType[K]):这个;
}
那应该是你想要的。祝你好运

export interface TypedMap<DataType extends MapTypeAllowedData<DataType>>
  extends Map<keyof DataType, AllowedValue> { // changed here

  toJS(): DataType;
  get<K extends keyof DataType>(key: K, notSetValue?: DataType[K]): DataType[K];
  set<K extends keyof DataType>(key: K, value: DataType[K]): this;

}