首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >键入assert uppercase interface为lower

键入assert uppercase interface为lower
EN

Stack Overflow用户
提问于 2019-02-20 14:50:52
回答 1查看 376关注 0票数 1

C#中,类/接口属性必须大写是惯例。在ts & js中,情况并非如此。因此,当我们从ajax调用中返回数据时,它通常是大写的。

因此,我希望在两者之间键入assert的位置如下所示:

代码语言:javascript
复制
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中有没有一种方法可以在不需要在两者之间进行手动属性映射的情况下实现这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 14:58:04

没有。as TS是类型断言,不是类型转换。这意味着您让编译器知道它是TS类型,而不是要求编译器将其转换为TS类型,这也是不可能的。

基本上,TypeScript帮助您验证代码,而不是转换代码。您所期望的是一个JS特性,它是用来转换数据的,而不是类型。

如果您不想更改服务器上的配置,可以使用以下代码

代码语言:javascript
复制
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>{});

希望这已经足够清楚了

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54780439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档