返回顶部
首页 > 资讯 > 前端开发 > html >TypeScript 02中的变量和接口有什么作用
  • 779
分享到

TypeScript 02中的变量和接口有什么作用

2024-04-02 19:04:59 779人浏览 泡泡鱼
摘要

这篇文章主要介绍“typescript 02中的变量和接口有什么作用”,在日常操作中,相信很多人在TypeScript 02中的变量和接口有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方

这篇文章主要介绍“typescript 02中的变量和接口有什么作用”,在日常操作中,相信很多人在TypeScript 02中的变量和接口有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”TypeScript 02中的变量和接口有什么作用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

TS变量与接口

变量声明

其实TS中的变量声明和js中是一样的,所以你会JS就会TS,无外乎var、let和const,记住以下的表格内容就能解决绝大多数场景问题。

TypeScript 02中的变量和接口有什么作用

接口在面向对象语言中,接口是个比较核心的概念,其作用就是对类型命名和代码定义契约,其实就是对行为的抽象,对对象的形状进行描述。在TS中就是对值所具有的结构进行类型检查。

// 原始方法 function printLabel(labelObj: {label:string}){   console.log(labelObj.label); } let myObj = {name:"wenbo",label:"size 110"}; printLabel(myObj);  // 接口方法 interface LabelValue {   label: string; }  function printLabel2(labelValue:LabelValue){   console.log(labelValue.label);    } printLabel2(myObj);

上述代码表明,printLabel中传入对象labelObj有string类型的label属性。而传入的对象参数实际会包含很多属性,但是编译器智慧检查那些必须的属性是否存在、类型是否匹配。printLabel2接口其实就是对printLabel中传入对象类型的抽象,定义它的参数行为,类型检查器不会关注属性的顺序。

接口对象的声明方式

接口对象的声明方式很简单,就是在接口名前加上interface即可。

interface myObj {   name:string;   label:string; }

接口对象的基本属性

接口对象的属性无外乎默认属性、可选属性和只读属性等。

  • 默认属性:表示该属性必须存在,可读可改

  • 可选属性:表示该属性可有可无、可读可改,只需要在属性名后加上?符号即可,如:name?:string;。可以对可能存在的属性进行预定义,捕获引用了不存在属性时的错误。

  • 只读属性:表示该属性只能读取、不可修改,只需要在对象创建时对指定属性名前加上readonly即可,可以确保创建后不被修改。

interface LabelValue{   readonly id: number;//只读属性,表示该属性只能读取、不可修改   name?: string;//可选属性,表示该属性可有可无   label: string;//默认属性,表示该属性必须存在 } function printLabel(labelValue:LabelValue){   console.log(labelValue); }  let myObj: LabelValue = {name:"yichuan",id:100,label:"size 110"}; printLabel(myObj);//{ name: 'yichuan', id: 100, label: 'size 110' }  myObj.id = 200;// 报错: Cannot assign to 'id' because it is a constant or a read-only property.  let myObj2: LabelValue ={id:100}; // Type '{ id: number}' is not assignable to type 'LabelValue'. // Property 'label' is missing in type '{ id: number}'. // 报错: 缺少 label 属性

接口对象的函数类型

接口能够描述javascript中对象拥有的各种各样的外形。 除了描述带有属性的普通对象外,接口也可以描述函数类型。

使用接口表示函数类型,需要给接口定义一个调用签名,是一个只有参数列表和返回值类型的函数,其中参数列表的每个参数都得有属性名和类型。

interface myFun{   (name:string, age:number): void;//()中的是函数类型,void是否有返回值 }  let iFun: myFun;  iFun = function (name:string,age:number){   console.log(`my name is ${name}, my age is ${age}`) }  iFun("yichuan",18);//my name is yichuan, my age is 18

我们可以看到:首先创建了一个函数类型的接口myFun,再创建了一个函数类型的变量iFun,并将同类型的函数赋值给这个变量。

对于函数类型检查而言,函数的参数名不需要与接口定义的名字匹配。类型检查器会对函数参数进行逐个检查,判断对应位置的参数类型是否匹配。当然,如果你在函数中没有指定参数类型,那么TS类型系统会根据接口进行推断,并执行检查是否匹配。

interface myFun{   (name:string, age:number): void; }  let iFun: myFun;  iFun = function (name,age){   console.log(`my name is ${name}, my age is ${age}`) }  iFun("yichuan",18);////my name is yichuan, my age is 18

接口对象的可索引类型

与使用接口描述函数类型差不多,只不过可索引类型时通过描述对象索引类型和索引返回值类型的「索引签名」。

//定义一个学生列表接口 interface StudentList{   id: number;   name: string; }  // 定义一个班级接口 interface ClassList{   classname: string;   students: StudentList[];   [index: string]: any;//可以用任意的string类型去索引声明的对象, 值是any类型 }  function printLabel(data:ClassList){   return data; }  printLabel({   classname:"class 1",   numbers:30,   students:[{     id:2001,     name:"yichuan"   }] })

可索引接口的类型只可以使用string和number进行定义索引签名。可以同时使用两种类型的索引,但是数字索引的返回值必须是字符串索引返回值类型的子类型。当使用  number来索引时,JavaScript会将它转换成string然后再去索引对象。

  • 字符串定义索引签名

  • 数字定义索引签名

  • 混合类型定义索引签名

class Animal {     name: string; } class Dog extends Animal {     breed: string; }  // 错误:使用数值型的字符串索引,有时会得到完全不同的Animal! interface NotOkay {     [x: number]: Animal;     [x: string]: Dog; }

字符串索引签名能够很好的描述dictionary模式,并且它们也会确保所有属性与其返回值类型相匹配。因为字符串索引声明了obj.property和obj["property"]两种形式都可以。

为防止给索引赋值,可以将其索引签名定义为只读类型。

interface ReadonlyStringArray {     readonly [index: number]: string; } let myArray: ReadonlyStringArray = ["Alice", "Bob"]; myArray[2] = "Mallory"; // error!

类接口

TS中可以对类设置强制执行的类型约定,即类接口。

interface FatherInterface{   firstName: string; }  class Son implements FatherInterface{   firstName!: String;   constructor(lastName:string,age:number){}; }

注意:

  • 接口只描述类的公共部分,而不是公共和私有两部分。它不会帮你检查类是否具有某些私有成员。

  • 类实现接口时,必须实现接口所有的属性

  • 接口无法约束类的构造函数,类型检查器只会对实例部分进行检查

我们知道类具有两种类型:静态部分的类型和实例的类型。当你用构造器签名去定义一个接口并试图定义一个类去实现这个接口时会得到一个错误:只对其实例部分进行类型检查,而constructor存在于类的静态部分,所以不在检查的范围内。

interface FatherInterface{   new (firstName:string); }  class Son implements FatherInterface{   constructor(firstName:string,lastName:string,age:number){}; }

继承接口

和类一样,接口也可以相互继承。可以将一个接口成员复制到另一个接口,灵活地分割接口到可复用模块中。

interface DogInterface{   type:string; }  interface Erha extends DogInterface{   name:string;   age:number; }  let erha = <Erha>{}; erha.type = "dog"; erha.name = "bobo"; erha.age = 2;

同样的,接口也可以实现多继承。

class Son implements FatherInterface{   constructor(firstName:string,lastName:string,age:number){}; }  interface AnimalInterface{   foal:string; }  interface DogInterface{   type:string; }  interface Erha extends DogInterface, AnimalInterface{   name:string;   age:number; }  let erha = <Erha>{}; erha.type = "dog"; erha.name = "bobo"; erha.age = 2; erha.foal = "分娩";

小结

interface接口的定义其实很简单,和定义对象一样的形式。接口对象的基本属性包括:默认属性、可选属性以及只读属性,其可索引类型的定义只有string和number两种形式,类接口进行继承的形式和类的继承大同小异。

到此,关于“TypeScript 02中的变量和接口有什么作用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: TypeScript 02中的变量和接口有什么作用

本文链接: https://lsjlt.com/news/67086.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • TypeScript 02中的变量和接口有什么作用
    这篇文章主要介绍“TypeScript 02中的变量和接口有什么作用”,在日常操作中,相信很多人在TypeScript 02中的变量和接口有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2024-04-02
  • TypeScript中变量和接口的作用是什么
    本文小编为大家详细介绍“TypeScript中变量和接口的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“TypeScript中变量和接口的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。TS变...
    99+
    2023-06-05
  • TypeScript中的接口和泛型是什么
    这篇文章给大家分享的是有关TypeScript中的接口和泛型是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。接口使用 interface 关键字来定义数据类型对象类型当存在于较长的数据类型约束时,我们可以通过...
    99+
    2023-06-29
  • java中接口有什么作用
    java中接口有什么作用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类...
    99+
    2023-06-14
  • Tomcat中的JMX接口有什么作用
    Tomcat中的JMX(Java Management Extensions)接口可以用于监控和管理Tomcat服务器。通过JMX接...
    99+
    2024-03-08
    Tomcat
  • Spark中的广播变量有什么作用
    在Spark中,广播变量(Broadcast Variables)用于高效地向所有工作节点发送一个较大的只读值,从而减少每个任务中需...
    99+
    2024-03-05
    Spark
  • Python的__name__变量有什么作用
    本篇内容主要讲解“Python的__name__变量有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的__name__变量有什么作用”吧!我知道大家肯定不止一次在Python...
    99+
    2023-06-01
  • LBS接口有什么作用
    这篇文章主要讲解了“LBS接口有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LBS接口有什么作用”吧!1、LBS是什么LBS(Location B...
    99+
    2024-04-02
  • Angular中的模板引用变量有什么作用
    这篇文章主要介绍了Angular中的模板引用变量有什么作用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Angular中的模板引用变量有什么作用文章都会有所收获,下面我们一起来...
    99+
    2024-04-02
  • python中全局变量的作用域有什么用
    全局变量在Python中的作用域是整个程序的范围,可以在程序的任何地方使用和修改。这样的特性有以下几个用途:1. 共享数据:全局变量...
    99+
    2023-08-12
    python
  • PHP的Videoparse接口有什么作用
    这篇文章主要讲解了“PHP的Videoparse接口有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP的Videoparse接口有什么作用”吧!接口特点:Videoparse解析...
    99+
    2023-06-04
  • javascript中变量的作用是什么
    javascript中变量的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在javascript中,变量是临时存储值的容器,可以...
    99+
    2024-04-02
  • MyBatis中的LogFactory和Log接口有什么用
    在MyBatis中,LogFactory是用于创建Log实例的工厂类,而Log接口则是用于记录日志信息的接口。LogFactory负...
    99+
    2024-03-08
    MyBatis
  • ADO.NET _CommandPtr接口有什么作用
    本篇内容介绍了“ADO.NET _CommandPtr接口有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ADO库包含三个基本接口:...
    99+
    2023-06-17
  • java空接口有什么作用
    本篇内容介绍了“java空接口有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本教程操作环境:windows7系统、java10版,...
    99+
    2023-06-30
  • VB.NET中变量作用域的作用是什么
    VB.NET中变量作用域的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在一个过程或函数外声明的变量是全局变量,对本程序内部所有的过程和函数都起作用;而在一个过程或函...
    99+
    2023-06-17
  • 接口在Go语言中有什么作用?
    Go语言是一门现代化、高效的编程语言,它在很多领域都有着广泛的应用。其中,接口是Go语言中的一个重要概念,它可以让我们更加灵活地编写代码。本文将探讨接口在Go语言中的作用,并通过实例演示来说明它的应用。 一、什么是接口? 在面向对象编程中,...
    99+
    2023-08-05
    对象 接口 数据类型
  • Go语言的接口有什么作用
    本篇内容主要讲解“Go语言的接口有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言的接口有什么作用”吧!Go语言-接口在Go语言中,一个接口类型总...
    99+
    2024-04-02
  • javascript中接口的作用是什么
    这篇文章主要讲解了“javascript中接口的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中接口的作用是什么”吧! ...
    99+
    2024-04-02
  • C#中接口的作用是什么
    这篇文章给大家介绍C#中接口的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#接口的作用实例说明:public interface IBark  { &nb...
    99+
    2023-06-17
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作