Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript:如何对接口属性进行强制转换?_Typescript - Fatal编程技术网

Typescript:如何对接口属性进行强制转换?

Typescript:如何对接口属性进行强制转换?,typescript,Typescript,如何在出现此错误时强制转换geometryType: IShape是一种类型,而不是名称空间 为了 将添加为const,以确保typescript的值不会更改,并且可以推断类型 接口IShape{ 只读几何体类型:“矩形”|“正方形” } 让geometryType=“SQUARE”作为常量 常量几何体:IShape={ geometryType:geometryType } 您可能还希望提取几何体类型并按如下方式使用它: 键入GeometryType=“矩形”|“正方形”; 界面IShape

如何在出现此错误时强制转换geometryType:

IShape是一种类型,而不是名称空间

为了


添加为const
,以确保typescript的值不会更改,并且可以推断类型

接口IShape{
只读几何体类型:“矩形”|“正方形”
}
让geometryType=“SQUARE”作为常量
常量几何体:IShape={
geometryType:geometryType
}
您可能还希望提取几何体类型并按如下方式使用它:

键入GeometryType=“矩形”|“正方形”;
界面IShape{
只读geometryType:geometryType;
}
让geometryType:geometryType=“SQUARE”;
常量几何体:IShape={
geometryType:geometryType
}

您也可以使用
IShape['geometryType']
IShape
界面获取属性
geometryType
的类型

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


let geometryType = "SQUARE" as IShape['geometryType'];
const geometry: IShape = {
    geometryType: geometryType
}

TS没有强制转换功能,因为它不会真正改变您的数据。相反,它具有类型断言,即重写编译器以提供特定类型的内容。但是,类型系统在运行时不存在,因此这只是一个编译时操作。这是否回答了您的问题@FabianLauer谢谢我在下面得到了一个正确的答案将阅读你的链接似乎也很有趣,必须进行实验:)@VLAZ是的,你是对的,这不完全是铸造,但我到处都能看到,所以我也这么做:)铸造的区别很大。如果是正确的强制转换,那么在运行时会出现异常。
interface IShape {
    readonly geometryType: "RECTANGLE" | "SQUARE"
}


let geometryType = "SQUARE" as IShape['geometryType'];
const geometry: IShape = {
    geometryType: geometryType
}