是否可以在Javascript中实例化空对象,但使用嵌套流类型定义其结构?
假设我有一组流类型,如下所示:是否可以在Javascript中实例化空对象,但使用嵌套流类型定义其结构?,javascript,ecmascript-6,flowtype,Javascript,Ecmascript 6,Flowtype,假设我有一组流类型,如下所示: type Planet = { diameter: number, mass: number, name: string, countries: Array<Country> } type Country = { area: number, population: number, name: string, cities: Array<City> } type City = { population:
type Planet = {
diameter: number,
mass: number,
name: string,
countries: Array<Country>
}
type Country = {
area: number,
population: number,
name: string,
cities: Array<City>
}
type City = {
population: number,
name: string
}
行星类型={
直径:个数,
质量:数量,
名称:string,
国家:阵列
}
类型国家={
地区:数目,,
人口:,
名称:string,
城市:阵列
}
类型城市={
人口:,
名称:string
}
考虑到这种嵌套结构,是否有一种简单的方法来实例化一个名为
planet
的对象,该对象将自动包含一个Country
子对象和一个City
孙辈对象?我以前没有使用过Flow,但您可以像在Typescript中那样执行此操作
const地球:行星={
直径:1,
质量:1,,
名称:“地球”,
国家:[{
地区:268020,
人口:4886000,
名称:“新西兰”,
城市:[{
人口:212700,
姓名:“惠灵顿”
}]
}]
}
流只是用于键入-它没有说明实际的对象定义或构造函数。您只需在线创建一个对象,甚至只需要一个空的国家数组(作为数组类型仍然有效)
/*@flow*/
行星类型={
直径:个数,
质量:数量,
名称:string,
国家:阵列
}
类型国家={
地区:数目,,
人口:,
名称:string,
城市:阵列
}
类型城市={
人口:,
名称:string
}
函数foo():Planet{
常量示例={
直径:1,
名称:'冥王星',
质量:100,
国家:[],
};
返回示例;
}
你试过什么?您的类型声明是正确的,如果您想实例化一个对象,那么就将它声明为类
/* @flow */
type Planet = {
diameter: number,
mass: number,
name: string,
countries: Array<Country>
}
type Country = {
area: number,
population: number,
name: string,
cities: Array<City>
}
type City = {
population: number,
name: string
}
function foo(): Planet {
const example = {
diameter: 1,
name: 'Pluto',
mass: 100,
countries: [],
};
return example;
}