我是 typescript 的新手。 typescript 中可选属性的效用是什么?它们之间的区别是什么:
a?: number; a: number | undefined;
n6lpvg4x1#
可选属性:在Typescript中,您可以在接口中声明一个可选属性。假设您有一个雇员接口,中间名是可选的,那么您的代码将如下所示:
interface IEmployee { firstName: string; lastName: string; middleName?: string; }
当有人使用您的接口IEmployee时,middleName将是可选的,但firstName和lastName是强制的。
let emp: IEmployee = { firstName: "Hohn", lastName: "Doe" }
管道操作员:有时候你希望一个变量可以包含多种类型。如果你声明一个属性为数字,那么它只能包含数字。管道操作符可以告诉typescript它可以包含多种类型。其他情况下,管道操作符非常有用,当你从函数返回一些东西,可以返回多种类型取决于条件。希望能有所帮助
ktecyv1j2#
参数编号可选参数和参数类型number | undefined之间的区别在于,您不必提供参数...
number | undefined
function a(a?: number) { return a; } function b(a: number | undefined) { return a; } // Okay a(); b(1); // Not okay: Expected 1 arguments, but got 0. b();
这适用于函数、方法和构造函数。
如果你打开严格的null检查,你会发现任何可选参数或属性都会自动得到一个联合类型,这意味着在下面的例子中id的类型是number | undefined,即使你只指定了number:
id
number
// With strict null checks, this: class Example { id?: number; } // ... is the same as this: class Example { id?: number | undefined; } // ... and this: class Example { id: number | undefined; }
我建议使用第一个示例,因为它可以使属性和参数之间的语法保持一致。
2条答案
按热度按时间n6lpvg4x1#
可选属性:在Typescript中,您可以在接口中声明一个可选属性。假设您有一个雇员接口,中间名是可选的,那么您的代码将如下所示:
当有人使用您的接口IEmployee时,middleName将是可选的,但firstName和lastName是强制的。
管道操作员:有时候你希望一个变量可以包含多种类型。如果你声明一个属性为数字,那么它只能包含数字。管道操作符可以告诉typescript它可以包含多种类型。其他情况下,管道操作符非常有用,当你从函数返回一些东西,可以返回多种类型取决于条件。
希望能有所帮助
ktecyv1j2#
参数编号
可选参数和参数类型
number | undefined
之间的区别在于,您不必提供参数...这适用于函数、方法和构造函数。
严格空值检查
如果你打开严格的null检查,你会发现任何可选参数或属性都会自动得到一个联合类型,这意味着在下面的例子中
id
的类型是number | undefined
,即使你只指定了number
:我建议使用第一个示例,因为它可以使属性和参数之间的语法保持一致。