Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
键入数组的typescript语法是什么_Typescript_Immutable.js - Fatal编程技术网

键入数组的typescript语法是什么

键入数组的typescript语法是什么,typescript,immutable.js,Typescript,Immutable.js,我实际上不知道在下面的第二行中如何调用要合并的参数,但它看起来像是一个具有字符串键的对象数组。英语中的参数是什么,如何构造/传递…iterables:{[key:string]:V}[] 编辑: 在阅读了答案之后,我混淆了很多东西,但主要是es6语法和typescript语法。下面的答案很好地处理了Rest参数,以帮助区分这些参数。在typescript中调用: 可索引类型有一个索引签名,它描述了我们需要的类型 可用于索引到对象中,以及相应的返回 索引时的类型 例如: let obj: { [n

我实际上不知道在下面的第二行中如何调用要合并的参数,但它看起来像是一个具有字符串键的对象数组。英语中的参数是什么,如何构造/传递…iterables:{[key:string]:V}[]

编辑:

在阅读了答案之后,我混淆了很多东西,但主要是es6语法和typescript语法。下面的答案很好地处理了Rest参数,以帮助区分这些参数。

在typescript中调用:

可索引类型有一个索引签名,它描述了我们需要的类型 可用于索引到对象中,以及相应的返回 索引时的类型

例如:

let obj: { [name: string]: number };
obj = { a: 1, b: 2 }; // ok
obj = { a: "1" }; // error: Type '{ a: string; }' is not assignable to type '{ [name: string]: number; }'
对于不可变签名:

merge(...iterables: {[key: string]: V}[]): Map<string, V>
V generic约束被推断为string,因为对象中的值是fromJS的参数,那么其余的对象也需要是string=>string

编辑 在您的示例中,没有使用,正在使用的称为:


好的,所以spread操作符正在处理一个对象数组,将它们作为merge函数的实际参数单独展开。每个对象都由一个字符串设置键,每个键的值都是数字类型。在我的第一个示例中,对象值是数字,在第二个示例中,值是字符串。至于排列运算符,请检查我修改的答案
let obj: { [name: string]: number };
obj = { a: 1, b: 2 }; // ok
obj = { a: "1" }; // error: Type '{ a: string; }' is not assignable to type '{ [name: string]: number; }'
merge(...iterables: {[key: string]: V}[]): Map<string, V>
fromJS({ "key1": "str1" }).merge({ "key2": "str2" }, { "key3": "str3" }, ...);
function fn<T>(...args: T[]) {
    args.forEach(item => console.log(item));
}
function fn() {
    var args = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
    }
    args.forEach(function (item) { return console.log(item); });
}
fn();
fn(1);
fn(1, 2, 3);
fn("str1", "str2");
fn(1, "str"); // error: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly