2017-07-26 80 views
4

打字稿空对象说我有:的类型变量

type User = { 
... 
} 

我想创建一个新的user,但将其设置为一个空对象:

const user: User = {}; // This fails saying property XX is missing 
const user: User = {} as any; // This works but I don't want to use any 

我该怎么办呢?我不想将变量设置为null

+4

要么'用户'是类型'用户| {}'或'Partial ',或者您需要重新定义'User'类型以允许空对象。现在,编译器正确地告诉你'user'不是'User'。 – jcalz

回答

3

真的取决于你想做什么。类型是打字稿中的文档,因此您希望在创建类型时展示关于如何使用这个东西的意图。

选项1:如果用户可能会在其一生中有一些,但不是所有的属性

使所有属性可选

type User = { 
    attr0?: number 
    attr1?: string 
} 

选项2:如果包含用户变量可以开始空

type User = { 
... 
} 
let u1: User = null; 

虽然,真的,在这里如果要指出用户对象,然后才能知道它将被分配给它,你可能想要做let u1:User没有任何任务。

方案3:你可能想

真的什么,打字稿的前提是要确保你符合你的类型,以避免决策失误勾勒出心理模型。如果你想逐个添加一个对象,这是TypeScript试图让你不要做的习惯。

更可能的是,您希望创建一些局部变量,然后在准备好成为全功能用户时将其分配给包含用户的变量。这样你永远不会留下部分形成的用户。这些东西都很糟糕。

let attr1: number = ... 
let attr2: string = ... 
let user1: User = { 
    attr1: attr1, 
    attr2: attr2 
}