首页 > 解决方案 > TypeScript 中的一些语法糖,用于值与类型偶数的情况?

问题描述

TypeScript 中是否有一些语法糖允许在value不复制右侧的表达式的情况下进行初始化type Type =?(是的,分号必须用逗号代替)

type Type = {
    foo: "alpha";
    bravo: "bravo";
};

const value: Type = {
    foo: "alpha",
    bravo: "bravo"
};

标签: typescript

解决方案


如果您想要从表达式中推断类型,那么typeof您的朋友是:

const value = {
    foo: "alpha",
    bravo: "bravo"
};
type Type = typeof value;

这将为您提供如下类型:

type Type = {
    foo: string;
    bravo: string;
};

如果您需要将每个值类型推断为文字,您可以执行以下操作:

const value = {
    foo: "alpha",
    bravo: "bravo"
} as const;

type Type = typeof value;

现在Type将是:

type Type = {
    readonly foo: "alpha";
    readonly bravo: "bravo";
};

如果你不想要这些属性,readonly你可以这样做:

const value = {
    foo: "alpha" as const,
    bravo: "bravo" as const
};

type Type = typeof value;

并且Type将是:

type Type = {
    foo: "alpha";
    bravo: "bravo";
};

推荐阅读