gpt4 book ai didi

typescript - 流向 TypeScript 迁移

转载 作者:搜寻专家 更新时间:2023-10-30 21:32:43 28 4
gpt4 key购买 nike

我尝试将我尚未编写的项目从 Flow 迁移到 TypeScript。我有一些 Flow 结构,但我在 TypeScript 中找不到对应的结构。

type Value =
| string
| number
| boolean
| BaseObject
| Array<BaseObject>

type BaseObject = ObjectMap<?Value> & {
meta?: BaseObject;
}

type ObjectMap<T> = {
[key: string]: T;
};

我得到了这个错误:Type alias 'BaseObject' circularly references itselfType alias 'Value' circularly references itself。我了解此错误的含义,但我找不到在 TS 中无错误地获得相同行为的方法。

有什么想法吗?

最佳答案

这是 TypeScript in the playground (以及等效的 Flow in the playground )。

// The unchanged Flow type works in TypeScript.
type Value =
| string
| number
| boolean
| BaseObject
| Array<BaseObject>

// The unchanged Flow type works in TypeScript.
type ObjectMap<T> = {
[key: string]: T;
};

// The unchanged Flow type...
// type BaseObject = ObjectMap<?Value> & {
// meta?: BaseObject;
// }

// ...and the equivalent TypeScript.
interface BaseObject extends ObjectMap<Value | null | undefined> {
meta?: BaseObject;
}

关于差异的一些说明:

演示

const x: BaseObject = {
prop1: null,
prop2: undefined,
prop3: 'prop3',
prop4: 10,
prop5: {
meta: {}
},
prop6: [{
meta: {}
}],
prop7: new Date() // causes an error
}

关于typescript - 流向 TypeScript 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56916902/

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