如何传递一个包含Flow中的许多键和值的对象的变量?

问题描述:

我是新来的Facebook流量。如何传递一个包含Flow中的许多键和值的对象的变量?

https://github.com/facebook/flow

目前,我有一类这样的事情,我不喜欢我在构造函数的参数为​​长。

class SamplePerson { 

    constructor(obj: {id: string, name: string, age: number, height: number, birthdate: string, sex: string, weight: number}') { 
     this._id = obj.id; 
     this._name = obj.name; 
     this._age = obj.age; 
     this._height = obj.height; 
     this._weight = obj.weight; 
     this._birthdate = obj.birthdate; 
     this._sex = obj.sex; 
    } 

} 

所以,而不是像上面的东西,我希望它是这样的东西在下面。

什么是将包含类型信息的变量传递给构造函数的参数的适当方式?

像这样的事情

const objType = {id: string, name: string, age: number, height: number, birthdate: string, sex: string, weight: number}; 

class SamplePerson { 

    constructor(obj: objType) { 
     this._id = obj.id; 
     this._name = obj.name; 
     this._age = obj.age; 
     this._height = obj.height; 
     this._weight = obj.weight; 
     this._birthdate = obj.birthdate; 
     this._sex = obj.sex; 
    } 

} 
+0

人不了解的“流类型”,但你是如何在第一个例子创建“SamplePerson”的对象? – Deshak9

+0

我的意思是流量。新的SamplePerson({id:'',name:'',etc}) – hytm

+0

不确定是否可以在构造函数中简单地执行“obj:Object” – Deshak9

声明OBJTYPE时,只需使用类型,而不是常量的。你可以阅读有关流量类型别名(在这种情况下,OBJTYPE是一个类型别名)这里https://flow.org/en/docs/types/aliases/

type ObjType = {id: string, name: string, age: number, height: number, birthdate: string, sex: string, weight: number}; 

class SamplePerson { 
    constructor(obj: ObjType) { 
     ... 
    } 
} 
+0

谢谢!类型别名就是它的单词。得到它了! – hytm