# TypeScript 能手养成之旅 Day 15 介面(Interface)

前言

上一篇结束後已经将型别部分,大致上了解差不多了,铁人文章也来到一半了。今天开始下半部的铁人,会比较有趣吗? 让我们继续看下去。

认识 Interface

interface 是用来定义物件的资料型别。简单来说,事先约定好某个物件会是什麽样的资料格式,其属性的型别为何。如果有违反这个规定,就会进行提醒有误。

interface 第一个字母会是大写,且只用来定义描述。

Interface 宣告

建立一个 PersonDetail 介面,并描述里面的属性 namephoneskillscheckDault

interface PersonDetail {
  name: string
  phone: number
  skills: string[]
  checkDault: (age: number) => void 
}

接下来定义一个变数 cy ,挂上 PersonDetail 规则。

// 正常运行
const cy: PersonDetail = {
  name: 'cy',
  phone: 123456789,
  skills: ['Ruby', 'JavaScript'],
  checkDault: (age) => (age < 18 ? console.log('Not adult') : console.log('Adult'))
}

console.log(cy)
// {
  name: 'cy',
  phone: 123456789,
  skills: [ 'Ruby', 'JavaScript' ],
  checkDault: [Function: checkDault]
}
cy.checkDault(20) // Adult

如果缺少属性

如果型别错误

选用属性(Optional Properties)

当我们有一些属性不是必须的,这个时候我们可以在属性名称後面加上 ?,该属性就可以赋予弹性给予。

interface PersonDetail {
  name: string
  phone: number
  skills?: string[]
  checkDault: (age: number) => void 
}

const cy: PersonDetail = {
  name: 'cy',
  phone: 123456789,
  // 少了 skills 属性
  checkDault: (age) => (age < 18 ? console.log('Not adult') : console.log('Adult'))
}

从上面程序码可以发现,少了 skills 属性,依然不会喷错

唯读属性(Readonly properties)

如果打算第一次赋值後,不再被修改,就可以使用 唯读属性 使用方始要在该属性前面加上 readonly 即可。

interface PersonDetail {
  readonly name: string
  phone: number
  skills?: string[]
  checkDault: (age: number) => void 
}

const cy: PersonDetail = {
  name: 'cy',
  phone: 123456789,
  skills: ['Ruby', 'JavaScript'],
  checkDault: (age) => (age < 18 ? console.log('Not adult') : console.log('Adult'))
}

cy.name = 'CY' // 喷错

结语

今天初步介绍 interface 的使用,还有如果有不同条件需求下该如何调整的方式,希望大家可以一起来尝试看看,我们明天继续努力能手之旅。


<<:  Day 19 BeautifulSoup模组一

>>:  Day 20:Dijkstra演算法

Day-30 资讯安全宣导

资讯安全宣导 tags: IT铁人 何谓资讯安全 随着资讯科技进步,资讯安全的重要程度日渐提升,以杰...

Web基础篇

先宣传一下我的新书,终於出来惹,感动到无法言语>"< 还请大家多多支持! We...

30天轻松学会unity自制游戏-安装unity

首先工欲善其事,必先利其器,制作游戏有很多好用的工具。 选择一种适合自己的开始,如已有确认过要开发的...

JavaScript入门 Day06_如何使用字串

在讲完魔法的那些东东後,那来讲讲字串的一些小小小的用法 如果今天施展了两个咒语,我们变出了两个字串,...

Microsoft Azure Pass 学习日志 Day 2

Chap.I Compute Services 计算服务 Part 1. Virtual Machi...