javascript - 使用类将 JSON 对象转换为 typescript 类型变量的正确方法?

标签 javascript json typescript

这是我正在尝试做的一个更简单的例子:

export class Person{
    id:Number;
    name:String;
}

export class PersonForm{

    // This line:
    default:Person = {name: "Guy"};
    // Gives the following error:
    //  Error:(25, 5) TS2322: Type '{ name: string; }' is not assignable to type 'Person'.
    //  Property 'id' is missing in type '{ name: string; }'.

    // I tried <Person>{name: "Guy"} but it gives the same error.

}

只要我不使用不存在的属性,我怎样才能让编译器忽略这个问题,或者我如何声明这个类,这样我就可以用这种方式进行赋值而不是 new Person() 然后只设置我的属性想。

注意:将具有所有属性的对象发送到构造函数并不是我期望的解决方案。使用接口(interface)也很有效,因为我可以将字段声明为可选,我如何在类中做同样的事情?

添加更多信息:

我要实现的主要目标:

找到声明一个类(而不是接口(interface))的最佳方式,这样我就可以用干净的代码在一行中初始化它,只设置我想设置的参数。在 Java 中,您将重载构造函数或使用 Builder 模式。

我当然可以尝试构建器模式,但我正在寻找一种更打字的方式来做到这一点,如果有的话。

最佳答案

我找到了最简单的方法,而且是可行的。我想我以前曾尝试过这种方法,但事实上我使用的是“数字”和“字符串”类型而不是“数字”和“字符串”,这可能会让我从编译器中误导错误,以下代码可以创造奇迹对我来说:

export class Person{
    constructor(
        public id?: number, // make sure you use number and string types instead of Number and String types
        public name?: string // make sure you make all properties optional using "?"
    ){}
}

export class PersonForm{
    default:Person = <Person>{name: "Guy"};
}

关于javascript - 使用类将 JSON 对象转换为 typescript 类型变量的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534050/

相关文章:

javascript - 转换具有父子关系的逗号分隔字符串

javascript - Fullcalendar 3 - 当前日期边框颜色

sql - 检查 JSON 数组中是否存在值

javascript - 在 JavaScript 中分析 JSON 数据

javascript - typescript 中的 java interface.class 相当于什么

派生类中的 typescript 推断函数参数

JavaScript 数字到罗马数字的转换

php - 如何使用 PHP 删除 JSON 中的方括号

javascript - 如何使用覆盖进行重新导出?

javascript - 如何定位下一个 <div> 元素?