Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Typescript中定义对象的类型?_Typescript - Fatal编程技术网

如何在Typescript中定义对象的类型?

如何在Typescript中定义对象的类型?,typescript,Typescript,我有以下代码: type Machine = { id: string, name: string, tonnage?: number } const machines = { "machine1": {id: "S01", name: "AnyMachine"} as Machine, } 是否可以指示键为字符串,值为机器类型? “作为机器进行铸造”似乎可行,但我希望有更少冗长的替代方案。您可以这样做: interface MachineHolder {

我有以下代码:

type Machine = {
    id: string,
    name: string,
    tonnage?: number
}

const machines = {
    "machine1": {id: "S01", name: "AnyMachine"} as Machine,
}
是否可以指示键为字符串,值为机器类型?
“作为机器进行铸造”似乎可行,但我希望有更少冗长的替代方案。

您可以这样做:

interface MachineHolder {
  [key: string]: Machine;
}

type Machine = {
  id: string,
  name: string,
  tonnage?: number
}

const machines: MachineHolder = {
  "machine1": {id: "S01", name: "AnyMachine"},
}

您可以这样做:

interface MachineHolder {
  [key: string]: Machine;
}

type Machine = {
  id: string,
  name: string,
  tonnage?: number
}

const machines: MachineHolder = {
  "machine1": {id: "S01", name: "AnyMachine"},
}
您可以这样做:

type Machines = {
    [key: string]: Machine;
}

const machines: Machines = {
    "machine1": { id: "S01", name: "AnyMachine" }
}
但是,根据您要做的事情,可能没有必要这样做。
Typescript类型系统是,因此您只需执行此操作即可工作:

const machines = {
    "machine1": { id: "S01", name: "AnyMachine" }
}

function fn(machine: Machine) {
    // ...
}

fn(machines.machine1);
在这里,编译器推断您正在传递正确的类型,即使
机器
未定义为
机器
的映射。

您可以执行以下操作:

type Machines = {
    [key: string]: Machine;
}

const machines: Machines = {
    "machine1": { id: "S01", name: "AnyMachine" }
}
但是,根据您要做的事情,可能没有必要这样做。
Typescript类型系统是,因此您只需执行此操作即可工作:

const machines = {
    "machine1": { id: "S01", name: "AnyMachine" }
}

function fn(machine: Machine) {
    // ...
}

fn(machines.machine1);

在这里,编译器推断您传递了正确的类型,即使
机器
没有定义为
机器
的映射。

谢谢,我的意图很奇怪。我只想将其用作自定义类型记录,并使用typescript工具检查我的类型,而无需编译。我知道我应该使用更好的工具,比如数据库,但这对于小数据来说没有那么痛苦:)谢谢,我的意图很奇怪。我只想将其用作自定义类型记录,并使用typescript工具检查我的类型,而无需编译。我知道我应该使用更好的工具,比如数据库,但这对于小数据来说是不那么痛苦的:)