首页 > 解决方案 > 打字稿:如何强制转换为接口属性?

问题描述

当我收到此错误时如何转换geometryType:

IShape 是类型而不是命名空间

为了

  interface IShape {
    readonly geometryType: "RECTANGLE" | "SQUARE"
  }


  let geometryType = "SQUARE" as IShape.geometryType
  const geometry: IShape = {
    geometryType: geometryType
  }

标签: typescript

解决方案


添加as const以确保打字稿值不会改变并且可以推断类型。

  interface IShape {
    readonly geometryType: "RECTANGLE" | "SQUARE"
  }


  let geometryType = "SQUARE" as const
  const geometry: IShape = {
    geometryType: geometryType
  }

您可能还想提取几何类型并像这里一样使用它:

type GeometryType = "RECTANGLE" | "SQUARE";

interface IShape {
  readonly geometryType: GeometryType;
}


let geometryType: GeometryType = "SQUARE";

const geometry: IShape = {
    geometryType: geometryType
}

推荐阅读