首页 > 解决方案 > Typescript 使用具有严格值的接口

问题描述

我有一个打字稿/反应项目,我在其中使用@material 组件。在 @types/material__ component下有定义。在定义中经常有类似的接口(这个来自@types/material__menu/constants.d.ts):

export interface CornerBit extends MDCNumbers {
    BOTTOM: 1;
    CENTER: 2;
    RIGHT: 4;
    FLIP_RTL: 8;
}

现在,如果我想在我的代码中使用 CornerBit,我会这样做:

import { CornerBit } from "@material/menu/"

@material/menu/index.js 从 constants.js 中导出 CornerBit,其中声明为:

const CornerBit = {
  BOTTOM: 1,
  CENTER: 2,
  RIGHT: 4,
  FLIP_RTL: 8,
};

现在,当我将上面写的 CornerBit 导入到我的文件中并尝试执行以下操作时:

const MyCornerBit = CornerBit;

我得到:

TS2693: 'Corner' only refers to a type, but is being used as a value here.

所以我想我只是以某种方式导入接口,而不是 const 本身。我如何使用这样的接口(所有属性都有明确的值)?

那感觉完全没用:

const MyCornerBit: CornerBit = {
    BOTTOM: 1,
    CENTER: 2,
    RIGHT: 4,
    FLIP_RTL: 8,
}

谢谢你。

标签: typescripttypescript-typingstypescript2.0

解决方案


你应该像这样声明你MyCornerBitCornerBitconst

const MyCornerBit: CornerBit;

无需使用匹配的属性实例化该 const


推荐阅读