是否可以在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;
}