什么是 TypeScript?
TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的超集,可以编译成普通的 JavaScript 代码。TypeScript 强调静态类型、类、接口和模块等概念,它可以让 JavaScript 代码更加健壮和易于维护。
TypeScript 中的可选属性和必选属性
在 TypeScript 中,我们可以定义对象类型,对象类型可以包含属性和方法。一个对象类型的属性可以是必选的,也可以是可选的。我们可以使用问号(?)来标记一个属性为可选属性。
下面是一个示例:
-- -------------------- ---- ------- --------- ------ - ----- ------- ----- ------- - -------- ------------------- ------- - ------------------ ----------------- -- ----------- --- ---------- - ----------------- ---------------- - - ----- -------- ------ - - ----- ----- -- --------------------- ----- -------- ------ - - ----- -------- ---- -- -- ---------------------
在上面的代码中,我们定义了一个 Person
接口,它有一个必选属性 name
和一个可选属性 age
。我们定义了一个函数 printPerson
,它接受一个 Person
类型的参数。在函数中,我们打印出 name
属性,如果 age
属性存在,我们也会打印出来。
我们创建了两个 Person
类型的对象 person1
和 person2
,其中 person1
没有 age
属性,而 person2
有 age
属性。我们分别调用了 printPerson
函数来打印这两个对象。
在打印 person1
对象时,我们发现 age
属性是 undefined
,因为它是可选属性,可能不存在。在打印 person2
对象时,我们发现 age
属性的值是 18
,因为它存在。
TypeScript 中的必选属性
如果我们不想让属性是可选的,我们可以使用 !
符号来标记一个属性为必选属性。必选属性必须在对象创建时被赋值,否则会报错。
下面是一个示例:
-- -------------------- ---- ------- --------- ------ - ----- ------- ----- ------- - -------- ------------------- ------- - ------------------ ----------------- ----------------- ---------------- - ----- -------- ------ - - ----- ------ ---- -- -- --------------------- ----- -------- ------ - - ----- ------- -- -- ------ -------- ----- -- ------- ---------------------
在上面的代码中,我们将 age
属性标记为必选属性。我们创建了两个 Person
类型的对象 person1
和 person2
,其中 person1
有 age
属性,而 person2
没有 age
属性。我们分别调用了 printPerson
函数来打印这两个对象。
在打印 person1
对象时,我们发现 age
属性的值是 18
,因为它存在。在创建 person2
对象时,我们没有为 age
属性赋值,所以会报错。
TypeScript 中的可选链式调用
在 TypeScript 3.7 中,引入了可选链式调用的语法。它可以让我们在访问对象属性时,避免因为属性不存在而导致的错误。
下面是一个示例:
-- -------------------- ---- ------- --------- ------ - ----- ------- ----- ------- - ----- -------- ------ - - ----- ----- -- ------------------------------------- -- --------- ----- -------- ------ - - ----- -------- ---- -- -- ------------------------------------- -- -----
在上面的代码中,我们定义了一个 Person
接口,它有一个必选属性 name
和一个可选属性 age
。我们创建了两个 Person
类型的对象 person1
和 person2
,其中 person1
没有 age
属性,而 person2
有 age
属性。
我们使用可选链式调用的语法来访问对象的 age
属性,并调用 toFixed
方法。在 person1
对象中,age
属性不存在,所以会返回 undefined
。在 person2
对象中,age
属性存在,所以会返回 18.00
。
总结
在 TypeScript 中,我们可以使用可选属性和必选属性来定义对象类型。可选属性可以不存在,而必选属性必须存在。我们还可以使用可选链式调用来避免因为属性不存在而导致的错误。掌握这些概念,可以让我们更好地编写 TypeScript 代码,提高代码的健壮性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66141141d10417a222476fb1