在 C# 类/接口属性是大写的。在 ts &安培; js 事实并非如此。所以当我们从ajax调用中获取数据时,它通常是大写的。
C#
ts
js
因此,我有如下内容,希望在两者之间键入assert:
interface CSharp { B: string; A: string; } interface TS { a: string; b: string; } let cs: CSharp = { A: 'hello', B: 'bob' }; let ts: TS = cs as TS;
这失败了,但是 ts公司 要实现这一点而不必在两者之间进行手动属性映射?
ts公司
没有。 as TS 是类型断言,而不是类型转换。这意味着您要让编译器知道它是 TS 键入,而不是要求编译器将其转换为 TS公司 类型,这也是不可能的。
as TS
TS
TS公司
基本上,TypeScript帮助您验证代码,而不是转换代码。您期望的是JS特性,它是转换数据,而不是类型。
如果不想更改服务器上的配置,可以使用以下代码
interface CSharp { B: string; A: string; } interface TS { a: string; b: string; } let cs: CSharp = { A: 'hello', B: 'bob' }; let ts: TS = Object.keys(cs).reduce((sum, key) => { sum[key.toLowerCase() as keyof TS] = cs[key as keyof CSharp]; return sum; }, <TS>{});
希望够清楚了