Interface TypeScript中的复杂接口

Interface TypeScript中的复杂接口,interface,typescript,Interface,Typescript,我不熟悉TypeScript,并尝试实现一个“复杂”的接口。我甚至不确定我想要的是否可能 我有以下javascript: var simpleSetting = { setting1: 'test', setting2: 1 }; 为此,我可以创建如下界面: interface SimpleSetting { setting1: string; setting2: number; } var simpleSetting: SimpleSetting = { setting1: '

我不熟悉TypeScript,并尝试实现一个“复杂”的接口。我甚至不确定我想要的是否可能

我有以下javascript:

var simpleSetting = { setting1: 'test', setting2: 1 };
为此,我可以创建如下界面:

interface SimpleSetting {
   setting1: string;
   setting2: number;
}
var simpleSetting: SimpleSetting = { setting1: 'test', setting2: 1 };
然后像这样使用它:

interface SimpleSetting {
   setting1: string;
   setting2: number;
}
var simpleSetting: SimpleSetting = { setting1: 'test', setting2: 1 };
我想做的是为这个声明定义一个接口:

var setting = {
    data: {
        simpleData: {
            enable: true
        },
        view: {
            expandSpeed: ""
        }
    }
};
我知道我可以创造这样的东西:

interface View {
   expandSpeed : string;
}
interface Data {
   simpleData: SimpleData;
   view : View;
}
interface ComplexSetting {
   data : Data;
}
interface ComplexSetting {
  data: {
    simpleData: {enable: boolean;};
    view: {expandSpeed: string;};
  };
}

要实现我想要的,但是否可以仅通过删除一个接口而不是三个接口来实现相同的结果?

当然可以,只需像这样内联内部接口:

interface View {
   expandSpeed : string;
}
interface Data {
   simpleData: SimpleData;
   view : View;
}
interface ComplexSetting {
   data : Data;
}
interface ComplexSetting {
  data: {
    simpleData: {enable: boolean;};
    view: {expandSpeed: string;};
  };
}

为什么我们结束
enable:boolean和带有
的属性声明
带分号的内部数据类型为什么不像下面这样使用逗号
{simpleData:{enable:boolean},view:{expandSpeed:string}