如何在 .tsx 文件中投射?
How to cast inside .tsx file?
我在 .tsx 文件中写了一些代码,我需要转换一个变量,但它不起作用,我不明白为什么。
这是我的代码:
let a : number = 2;
let b : string = a as unknown as string;
console.log("b type = "+typeof(b))
这就是结果:
b type = number
我认为这是因为我先转换为未知,然后转换为字符串,我不知道为什么有必要,但如果我只写:let b : string = a as string;
,我会收到以下错误:
ERROR in App.tsx(59,22)
TS2352: Conversion of type 'number' to type 'string' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
那么有人知道如何在 .tsx 文件中投射吗? (不可能使用 <> 进行类型转换,否则它会被视为 React 元素)
如果您熟悉强类型语言中的类型转换,您可能会误解 as string
的作用。请记住,typescript 只存在于编译时,不存在于运行时。所以 as string
不会在运行时对数据进行任何更改,它只会影响在编译时评估事物的方式。 as string
是一种告诉打字稿“我比你知道的多,所以不要检查这里的类型。假装它是一个字符串,即使所有的证据都表明它是别的东西”。
偶尔需要使用类型断言,但只有在您确实知道打字稿不知道的内容时才应使用它。你得到这个错误的原因是很明显它 not 实际上是一个字符串,所以打字稿增加了一个额外的层来说“你真的确定你不希望我检查你的类型?”。添加 as unknown
表示“是的,真的不要检查我的类型”。
如果你想把它从一个数字变成一个字符串,不要使用类型断言;编写代码将其更改为其他类型:
let b : string = a.toString();
// or
let b : string = '' + a;
我在 .tsx 文件中写了一些代码,我需要转换一个变量,但它不起作用,我不明白为什么。
这是我的代码:
let a : number = 2;
let b : string = a as unknown as string;
console.log("b type = "+typeof(b))
这就是结果:
b type = number
我认为这是因为我先转换为未知,然后转换为字符串,我不知道为什么有必要,但如果我只写:let b : string = a as string;
,我会收到以下错误:
ERROR in App.tsx(59,22)
TS2352: Conversion of type 'number' to type 'string' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
那么有人知道如何在 .tsx 文件中投射吗? (不可能使用 <> 进行类型转换,否则它会被视为 React 元素)
如果您熟悉强类型语言中的类型转换,您可能会误解 as string
的作用。请记住,typescript 只存在于编译时,不存在于运行时。所以 as string
不会在运行时对数据进行任何更改,它只会影响在编译时评估事物的方式。 as string
是一种告诉打字稿“我比你知道的多,所以不要检查这里的类型。假装它是一个字符串,即使所有的证据都表明它是别的东西”。
偶尔需要使用类型断言,但只有在您确实知道打字稿不知道的内容时才应使用它。你得到这个错误的原因是很明显它 not 实际上是一个字符串,所以打字稿增加了一个额外的层来说“你真的确定你不希望我检查你的类型?”。添加 as unknown
表示“是的,真的不要检查我的类型”。
如果你想把它从一个数字变成一个字符串,不要使用类型断言;编写代码将其更改为其他类型:
let b : string = a.toString();
// or
let b : string = '' + a;