gpt4 book ai didi

javascript - 使用 Flow 复制 TypeScript 'as'

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

在 TypeScript 中我可以做这样的事情

interface LoginInterface {
username: string;
password: string;
}

const MyObject = {
credentials: null as LoginInterface,
otherInfo: "I'm something not relevant to this question"
}

基本上我已经定义了一个接口(interface) LoginInterface 然后我创建了一个变量 MyObject 这是一个具有许多属性的对象(在这种情况下只有两个),其中一个属性credentials 需要有一个默认值 null 但我想声明它是 LoginInterface 类型,使用 TypeScript 非常简单,因为我可以使用关键字as。我如何使用 Flow 复制它?

现在我知道我可以做这样的事情了

const MyObject: {
credentials: LoginInterface,
otherInfo: string
} = {
credentials: null,
otherInfo: "I'm something not relevant to this question"
};

但我不想为 MyObject 定义类型我只想为 MyObject 的属性 credentials 定义类型,类似于我如何在 TypeScript 中实现这一点?

最佳答案

Flow 绝对不允许这样做,因为它不是类型安全的。使用 Flow 的重要原因之一是防止空指针错误。

要明确该值为 null可能 是一个 LoginInterface,您需要告诉 Flow 该值具有类型?LoginInterface,与null | 相同登录界面.

如果你真的不能用命名类型做到这一点,你可以内联:

const MyObject = {
credentials: (null: ?LoginInterface),
otherInfo: "I'm something not relevant to this question"
}

您需要括号,以便 Flow 可以将类型表达式与其余部分分开。

关于javascript - 使用 Flow 复制 TypeScript 'as',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50026685/

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