打字稿空对象说我有:的类型变量
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
。
打字稿空对象说我有:的类型变量
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
。
真的取决于你想做什么。类型是打字稿中的文档,因此您希望在创建类型时展示关于如何使用这个东西的意图。
使所有属性可选
type User = {
attr0?: number
attr1?: string
}
type User = {
...
}
let u1: User = null;
虽然,真的,在这里如果要指出用户对象,然后才能知道它将被分配给它,你可能想要做let u1:User
没有任何任务。
真的什么,打字稿的前提是要确保你符合你的类型,以避免决策失误勾勒出心理模型。如果你想逐个添加一个对象,这是TypeScript试图让你不要做的习惯。
更可能的是,您希望创建一些局部变量,然后在准备好成为全功能用户时将其分配给包含用户的变量。这样你永远不会留下部分形成的用户。这些东西都很糟糕。
let attr1: number = ...
let attr2: string = ...
let user1: User = {
attr1: attr1,
attr2: attr2
}
我们可以使用Type Assertions为类型化变量创建空对象。
type User = {
Username: string;
Email: string;
}
const user01 = {} as User;
const user02 = <User>{};
user01.Email = "[email protected]";
谢谢!这解决了它!这应该被标记为正确的答案... – Kokodoko
要么'用户'是类型'用户| {}'或'Partial',或者您需要重新定义'User'类型以允许空对象。现在,编译器正确地告诉你'user'不是'User'。 –
jcalz