数组

数组类型注解

const numberArr: (number | string)[] = [1, '2', 3]; //既可以是number 也可以是string
const stringArr: string[] = ['1', '2', '3'];
const underfinedArr: undefined[] = [undefined];

定义类型别名或者class 一定要满足class里面的类型属性,如果不一致会报错

type User={ name: string; age: number }

const objectArr1: User[] = [
{
name: 'dell',
age: 28,
},
]; class Teacher {
name: string;
age: number;
}
const objectArr2: Teacher[] = [
new Teacher(),
{
name: 'dell',
age: 28,
},
];

元组tuple

一个数组长度是固定的,每一项都是固定的类型 可以通过元组去约束

//比如读取csv 文件格式
const teacherInfo: [string, string, number] = ['Dell', 'male', 18]; //多一个少一个,类型不对应都会报错
const teacherList: [string, string, number][] = [
['Dell', 'male', 18],
['Dell', 'male', 18],
,
['Dell', 'male', 18],
];

接口interface

接口在开发过程重,ts会去做代码提示工具,编译成JavaScript之后并不会出现,会被剔除掉

interface和type 的区别

interface和type 相类似,但并不完全一致

1.type Person1可以代表是string

2.interface Person只能代表是个对象或者函数,没有办法代表是基础类型

规范:一般是先用interface 去定义,实在不行的情况才用type

interface Person{
name:string;
}
type Person1={
name:string;
}
const getPersonName=(person:Person)=>{
console.log(person.name);
}; const setPersonName=(person:Person,name:string)=>{
person.name=name;
}

接口继承

interface Person{
readonly msg:string;//表示只能读,不能写
name:string;
age?:number;//age不是必传的
[propName:string]:any;//可以接收其他的额外属性
say():string//返回值string
}
//接口可以继承另一个接口!注意如果定义为Teacher类型,必须同时满足Teacher+Person的方法和属性
interface Teacher extends Person{ //继承Person接口的属性和方法
teach():string;
}
const person = {
name: 'dell',
sex: 18,
say() {
return 'say hello';
},
teach() {
return 'teach';
},
};
//person: Teacher 必须要求Person的属性和方法之后 还得满足Teacher的
const setPersonName = (person: Teacher, name: string): void => {
person.name = name;
};
//类的继承
class User implements Person{ //必须具备接口的那些内容 不然会报错
name='ok';
say(){
return 'hello';
}
}

定义函数类型

interface SayHi{ //定义函数的类型
(word:string):string//接收string类型的函数 返回值必须是string
}
//定义函数类型
const say: SayHi = (word:string) => {
return word
};

初始化ts文件配置

tsc --init

编译成JavaScript

tsc 文件名.ts

运行ts文件

 ts-node demo.ts

TypeScript学习——数组、元组、接口(2)的更多相关文章

  1. TypeScript学习笔记之接口类型

    TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约.当然,和java中的用法基本一致,接口可以被继承也可以被实现. 定义一个简单的interface interf ...

  2. Typescript学习总结之接口

    接口 用来建立某种代码约定,使得其他开发者在调用某个方法或者创建新的类时必须遵守接口所定义的代码约定 1. 接口声明属性 interface IStudent { name: string; age: ...

  3. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. TypeScript学习笔记(五):接口

    使用接口 在前面的笔记中我们知道可以使用Object Type来指定参数的属性,如下: function printLabel(labelledObj: {label: string}) { cons ...

  5. TypeScript 学习一 参数,函数,析构表达式

    1,TypeScript是由谷歌开发的,并且新出的Angular2框架就是谷歌公司由TypeScript语言编写的,所以现在TypeScript是有微软和谷歌一起支持的: 2,TypeScript在j ...

  6. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. TypeScript 真香系列——接口篇

    接口带来了什么好处 好处One —— 过去我们写 JavaScript JavaScript 中定义一个函数,用来获取一个用户的姓名和年龄的字符串: const getUserInfo = funct ...

  8. typeScript学习随笔(一)

    TypeScript学习随笔(一) 这么久了还不没好好学习哈这么火的ts,边学边练边记吧! 啥子是TypeScript  TypeScript 是 JavaScript 的一个超集,支持 es6 标准 ...

  9. 深入浅出 Typescript 学习笔记

    TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准. TypeScript 由微软开发的自由和开源的编程语言. TypeScript 设计目标是开发大型应 ...

随机推荐

  1. Java实现 LeetCode 706 设计哈希映射(数组+链表)

    706. 设计哈希映射 不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新 ...

  2. Java实现 LeetCode 303 区域和检索 - 数组不可变

    303. 区域和检索 - 数组不可变 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点. 示例: 给定 nums = [-2, 0, 3, ...

  3. Java实现 LeetCode 136 只出现一次的数字

    136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...

  4. Java实现 LeetCode 38 外观数列

    38. 外观数列 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述.前五项如下: 1 11 21 1211 111221 1 被读作 "one 1" ...

  5. Java实现指定年份月份的日历表

    输入指定的年份与月份,看这个月的日历表 package Xueying_Liu; import java.util.Scanner; public class rilibiao { public st ...

  6. 如何解决flutter中gradle慢的问题

    初学flutter的时候,flutter run运行到有gradle的时候就停住不动了,研究后解决方法如下: 打开项目目录 中的 ...\myapp\android\gradle\wrapper\gr ...

  7. VSCode最佳设置

    最近在学习Vue,用VSCode开发.经过摸索,VSCode最佳设置. { "eslint.enable": false, "workbench.colorTheme&q ...

  8. ServiceStack.Redis 5.8 版本去掉每小时 6000 次访问限制

    ServiceStack.Redis这个官方 Redis 访问组件从4.0版本后开始商业化了,在使用的时候会有很多限制: 1.类型限制 类型限制是20,这个组件自带序列化功能,使得我们可以直接把对象保 ...

  9. 织梦cms 内容模型 option下拉框 value 分离

    需要修改的文件在根目录include/customfields.func.php文件 foreach($items as $v) { $v = trim($v); if($v!='') { $myfo ...

  10. uni-app热更新

    开发工具HbuilderX开发框架 uni-app.h5+1.生成 App 资源升级包1.1.修改版本号1.2.首先,更新 manifest.json 中的版本号.比如之前是 1.0.0,那么新版本应 ...