gpt4 book ai didi

javascript - 流通用函数创建通用类型

转载 作者:行者123 更新时间:2023-11-30 14:40:22 24 4
gpt4 key购买 nike

假设我有这个通用流类型:

/* @flow */

type Cat<T> = {
get:()=>T
};

我想创建一个创建猫的函数:

const makeCat:<U>(getter:()=>U)=>Cat<U> 
= (getter) => ({get:getter});

Flow 给我以下错误:

Cannot assign function to `makeCat` because `U` [1] is incompatible with `U` [2] in the return value of property `get` of the return value.

我尝试了几种不同的方法来定义传入的“getter”的类型,但总是出现相同的错误。

最佳答案

试试这个。我将它的逻辑分解为几个额外的步骤,以使其更易于理解。此解决方案的关键部分是使用 * 告诉流程在使用 makeCat 函数时“填充空白”。

type Cat<T> = {
get: () => T
}

// define signature of "makeCat" function
type MakeCat<U> = (getter: () => U) => Cat<U>

// use * to infer the variable at usage
const makeCat: MakeCat<*> = getter => ({ get: getter })

// inferred as Cat<string>
const cat = makeCat(() => 'secret')

// inferred as string
const value = cat.get()

关于javascript - 流通用函数创建通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49779304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com