博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
typescript 基础
阅读量:5944 次
发布时间:2019-06-19

本文共 3170 字,大约阅读时间需要 10 分钟。

看到用的iview3.1版本要支持typescript,觉得现在UI都开始支持ts,是该了解一波

基础

原始数据类型

包括:布尔值、数值、字符串、null、undefined 以及 ES6 Symbol。

let isDone: boolean = false;// number string null undefined //可以用 void 表示没有任何返回值的函数function sayname(): void {    alert('Tom');}复制代码

任意值

any 表示允许赋值为任意类型。

let num: any = 'seven';num = 7;//变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:复制代码

联合类型

表示取值可以为多种类型中的一种

let num: string | number;num = 'seven';num = 7;复制代码

接口

接口(Interfaces)来定义对象的类型

interface Person {    name: string;    age: number;}let tom: Person = {    name: 'Tom',    age: 25};//约束了 tom 的形状必须和接口 Person 一致// 定义的变量比接口少了一些属性是不允许的:多一些属性也是不允许的://可选属性interface Person {    name: string;    age?: number;}//仍然不允许添加未定义的属性:let tom: Person = {    name: 'Tom'};//任意属性interface Person {    name: string;    age?: number;    [propName: string]: any;}let tom: Person = {    name: 'Tom',    gender: 'male',    age:23};//一旦定义了任意属性,那么确定属性和可选属性都必须是它的子属性://任意属性的值允许是 string,但是可选属性 age 的值却是 number,number 不是 string 的子属性,所以报错了//只读属性 readonly interface Person {    readonly id: number;}let tom: Person = {    id: 89757,};tom.id = 9527;//error复制代码

数组

类型+方括号

let fibonacci: number[] = [1, 1, 2, 3, 5];//泛型let fibonacci: Array
= [1, 1, 2, 3, 5];//接口interface NumberArray { [index: number]: number;}//只要 index 的类型是 number,那么值的类型必须是 number。let fibonacci: NumberArray = [1, 1, 2, 3, 5];//anylet list: any[] = ['Xcat Liu', 25, { website: 'http://xcatliu.com' }];//类数组//常见的类数组都有自己的接口定义,如 IArguments, NodeList, HTMLCollection 等:function sum() { let args: IArguments = arguments;}复制代码

函数

//可选参数必须接在必需参数后面,TypeScript 会将添加了默认值的参数识别为可选参数,此时就不受「可选参数必须接在必需参数后面」的限制了function sum(x: number, y: number,z?:number): number {
//?可选 return x + y;}//输入多余的(或者少于要求的)参数,是不被允许的//TypeScript 的类型定义中,=> 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型let mySum: (x: number, y: number) => number = function (x: number, y: number): number { return x + y;};//rest参数,是数组function push(array: any[], ...items: any[]) { items.forEach(function(item) { array.push(item); });}复制代码

类型断言

手动指定一个值的类型

//1. 
<类型>
值//2. 值 as 类型 //tsx 语法(React 的 jsx 语法的 ts 版)中必须用这一种//类型断言不是类型转换,断言成一个联合类型中不存在的类型是不允许的function getLength(something: string | number): number { if ((
something).length) { return (
something).length; } else { return something.toString().length; }}复制代码

声明

//声明语句declare var jQuery: (selector: string) => any;jQuery('#foo');//声明文件// jQuery.d.tsdeclare var jQuery: (arg:string) => any;//约定声明文件以 .d.ts 为后缀,使用到的文件的开头,用「三斜线指令」表示引用了声明文件/// 
jQuery('#foo');//第三方文件// @types 的使用方式很简单,直接用 npm 安装对应的声明模块即可,以 jQuery 举例:npm install @types/jquery --save-dev复制代码

内置对象

JavaScript 中有很多内置对象,它们可以直接在 TypeScript 中当做定义好了的类型。 内置对象是指根据标准在全局作用域(Global)上存在的对象

let b: Boolean = new Boolean(1);let e: Error = new Error('Error occurred');let d: Date = new Date();let r: RegExp = /[a-z]/;//BOM DOM对象 Document、HTMLElement、Event、NodeListlet body: HTMLElement = document.body;let allDiv: NodeList = document.querySelectorAll('div');document.addEventListener('click', function(e: MouseEvent) {  // Do something});//ts 写node//npm install @types/node --save-dev复制代码

转载于:https://juejin.im/post/5b8e2cc6e51d451eeb441fc9

你可能感兴趣的文章
clear session on close of browser jsp
查看>>
关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
查看>>
mysql出现unblock with 'mysqladmin flush-hosts'
查看>>
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>
WPF Dispatcher介绍
查看>>
fiddler展示serverIP方法
查看>>
已释放的栈内存
查看>>
Android网络之数据解析----SAX方式解析XML数据
查看>>
Java递归列出所有文件和文件夹
查看>>
[关于SQL]查询成绩都大于80分的学生
查看>>
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
查看>>
LeetCode - Longest Common Prefix
查看>>
Android图片处理
查看>>
2015年第21本:万万没想到,用理工科思维理解世界
查看>>
大家谈谈公司里的项目经理角色及职责都是干什么的?
查看>>
剑指offer
查看>>
Velocity魔法堂系列二:VTL语法详解
查看>>
NopCommerce架构分析之八------多语言
查看>>