Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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承诺中的GenericType参数是什么<;通用类型>;定义?_Javascript_Typescript_Promise - Fatal编程技术网

Javascript Typescript承诺中的GenericType参数是什么<;通用类型>;定义?

Javascript Typescript承诺中的GenericType参数是什么<;通用类型>;定义?,javascript,typescript,promise,Javascript,Typescript,Promise,只是想知道TypescriptsPromisePromise定义中的泛型类型是否是传递给then处理程序的对象的类型 例如,这项工作: const pr:Promise<Array<Number>> = Promise.resolve([1, 2, 3]); const handler = (arg:Array<Number>)=> { console.dir(arg); } pr.then(handle

只是想知道Typescripts
Promise
Promise定义中的泛型类型是否是传递给
then
处理程序的对象的类型

例如,这项工作:

    const pr:Promise<Array<Number>> = Promise.resolve([1, 2, 3]);

    const handler = (arg:Array<Number>)=> {
       console.dir(arg);
    }

    pr.then(handler);
const pr:Promise=Promise.resolve([1,2,3]);
常量处理程序=(参数:数组)=>{
console.dir(arg);
}
pr.then(处理者);
另一个相关问题。如果我们将
处理程序
设为
处理程序:函数
,那么vscode会在
pr.then(处理程序
部分代码下投诉/绘制红色曲线。typescript是否具有可分配给处理程序函数的类型

只是想验证GenericType部分是否是promise执行的异步操作的结果的返回类型

不完全是。在您的示例中没有泛型类型:您为所有内容都提供了一个具体类型

你(我想)想要的是:


这里的
wrappedString
将具有该具体类型,无论您是否对其进行注释。

承诺只是异步值的容器,就像数组是多个值的容器一样。您必须指定它们所包含的内容的类型。实际上-只是想验证GenericType部分是返回类型,即rpromise执行的异步操作的结果?
const pr:Promise<Array<Number>> = Promise.resolve([1, 2, 3]);

// handler here is declared with type Array<Number> -> void
const handler = (arg:Array<Number>): void => { // NOTE: void
   console.dir(arg);
}

pr.then(handler);
// doubleToString has type Number -> String
const doubleToString = (n: Number): String => (n * 2).toString();
const doubledAndStringed: Promise<Array<String>> = pr.then(arr => arr.map(doubleToString));
const repeatString = (s: String): String => s.repeat(1);
const repeated: Promise<Array<String>> = pr.then(arr => arr.map(repeatString))
const wrap = (x: T): Promise<T> => Promise.resolve(x);
const wrappedString: Promise<String> = wrap('hello!');