TS学习随笔(一)->安装和基本数据类型
去年学过一段时间的TS,但由于在工作中不常用。就生疏了,最近项目要求用TS,那我就再回去搞搞TS,写一篇记录一下自己学习TS的进度以及TS知识点
首先,关于TS的定义我就不在这描述了,想看百度一下你就知道,我们直接来看怎么用就完事了
安装:
npm install -g typescript
这个命令要是一直下载不下来,请使用yarn试试,或者将源指向淘宝,用cnpm都一样
以上命令会在全局环境下安装 tsc 命令,安装完成之后,我们就可以在任何地方执行 tsc 命令了。
编译一个 TypeScript 文件:
tsc hello.ts
我们约定使用 TypeScript 编写的文件以 .ts 为后缀,用 TypeScript 编写 React 时,以 .tsx 为后缀。
检查:
TypeScript 只会进行静态检查,如果发现有错误,编译的时候就会报错。但即使报错,相应的JS文件还是被编译出来
  如果要在报错的时候终止 js 文件的生成,可以在 tsconfig.json 中配置 noEmitOnError 即可
TS基础:
原始数据类型,跟JS一模一样,没啥变化,只不过使用的用法变了
来,给看官们展示展示
布尔值:
let isDone:boolean = false
可以看到我们在变量名后面加了一个:boolean来标识idDone这个变量类型是布尔类型,
注意:
      使用new Boolean() 返回的是一个 Boolean 对象,而不是boolean类型
      但是直接调用 Boolean 可以返回一个 boolean 类型
数值:
使用number里定义数值类型
let decLiteral: number = ;
let hexLiteral: number = 0xf00d;
// ES6 中的二进制表示法
let binaryLiteral: number = 0b1010;
// ES6 中的八进制表示法
let octalLiteral: number = 0o744;
let notANumber: number = NaN;
let infinityNumber: number = Infinity;
编译结果:
var decLiteral = ;
var hexLiteral = 0xf00d;
// ES6 中的二进制表示法
var binaryLiteral = ;
// ES6 中的八进制表示法
var octalLiteral = ;
var notANumber = NaN;
var infinityNumber = Infinity;
注意:TS里面写六进制,八进制会被编译成十进制
字符串:
    使用 string 定义字符串类型:
let myName: string = 'Tom';
空值:
    js里面没有空值void的概念,在ts里可以用 void 表示没有任何返回值的函数:
function alertName(): void {
    alert('My name is Tom');
}
Null 和 Undefined
    在 TypeScript 中,可以使用 null 和 undefined 来定义这两个原始数据类型:
let u: undefined = undefined;
let n: null = null;
    注意:undefined 类型的变量只能被赋值为 undefined,null 类型的变量只能被赋值为 null。
    与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:
// 这样不会报错
let num: number = undefined;
// 这样也不会报错
let u: undefined;
let num: number = u;
    而 void 类型的变量不能赋值给 number 类型的变量:
let u: void;
let num: number = u; // index.ts(2,5): error TS2322: Type 'void' is not assignable to type 'number'.
Any:
any允许赋值为任意类型,如果是一个普通类型,在赋值过程中改变类型是不被允许的:
let myFavoriteNumber: string = 'seven';
myFavoriteNumber = ; // index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.
    但如果是 any 类型,则允许被赋值为任意类型。  
let myFavoriteNumber: any = 'seven';
myFavoriteNumber = ;
在任意值上访问任何属性都是允许的:
let anyThing: any = 'hello';
console.log(anyThing.myName);
console.log(anyThing.myName.firstName);
let anyThing: any = 'Tom';
anyThing.setName('Jerry');
anyThing.setName('Jerry').sayHello();
anyThing.myName.setFirstName('Cat');
可以认为,声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。
变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:
let something;
something = 'seven';
something = ;
等同于:
let something: any;
something = 'seven';
something = ;
原文参考自:https://github.com/xcatliu/typescript-tutorial/blob/master/basics/union-types.md
TS学习随笔(一)->安装和基本数据类型的更多相关文章
- TS学习随笔(七)->声明文件
		
now我们来看一看TS怎么声明文件, 在JS里面我们经常会使用各种第三方类库,引入方式也不太相同,常见的就是在HTML中通过script标签引入,然后就可以使用全局变量$或者jQuery了 我们通常这 ...
 - TS学习随笔(三)->接口
		
终于来到了比较重要的知识,接口,有多重要呢,反正是很重要好啵 在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型. 那什么是接口呢,在面向对象语言中,接口(Interf ...
 - TS学习随笔(四)->数组的类型
		
少侠们,今天我们继续来搞一搞TS 今天我们要来看一看TS中数组的定义是个什么鬼样子 数组的类型: 在 TypeScript 中,数组类型有多种定义方式,比较灵活.下面我们来看看有哪些定义方法 「类型 ...
 - TS学习随笔(二)->类型推论,联合类型
		
这篇内容指南: -----类型推论 -----联合类型 类型推论 第一篇中我们看了TS的基本使用和基本数据类型的使用,知道了变量在使用的时候都得加一个类型,那我们可不可以不加呢,这个嘛 ...
 - Ext.Net 学习随笔 001 安装Ext.Net
		
Ext.Net版本:4.1.0 Ext.Net官网:ext.net Ext.Net官方演示:mvc.ext.net Ext.Net MVC Example 下载:github.com/extnet/E ...
 - TS学习随笔(六)->断言
		
now,我们来看一看TS里面的断言,听起来很上档次啊,其实看完你就发出惊叹,这就是断言啊 类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型 语法 <类型>值 ...
 - TS学习随笔(五)->函数
		
这篇文章我们来看一下TS里面的函数 函数声明 在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expre ...
 - typeScript学习随笔(一)
		
TypeScript学习随笔(一) 这么久了还不没好好学习哈这么火的ts,边学边练边记吧! 啥子是TypeScript TypeScript 是 JavaScript 的一个超集,支持 es6 标准 ...
 - C#程序集Assembly学习随笔(第一版)_AX
		
①什么是程序集?可以把程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件.嗯,这个确实简单了些,但我是这么理解的.详细:http://blog.csdn.net/sws8327/ ...
 
随机推荐
- Kali学习笔记7:三层发现
			
三层发现:发送ICMP/IP数据包探测 第一种方式: 就是很简单的Ping命令: 不过linux的ping命令和windows的ping命令不一样,它会默认不停止地发数据包 我们可以通过-c参数来设置 ...
 - Python中parameters与argument区别
			
定义(define)一个带parameters的函数: def addition(x,y): return (x+y) 这里的x,y就是parameter 调用addition(3,4) 调用(cal ...
 - JAVA面试题-数组字符串基础
			
1.大写的Integer和String是可变类还是不可变类?怎么定义不可变类?不可变.用final关键字,如public final class Integer extends Number 2.比较 ...
 - base64文件转MultipartFile文件
			
在一些项目中,上传图片或者文件过大,这个时候我们就要选择压缩文件,压缩到我们指定的范围内在上传到服务器,当然压缩也是可以放到服务器进行操作的,但是考虑到前端传输时间问题,所以我们一般都是放到前端压缩后 ...
 - 解决svn图标不显示(绝对有用)
			
经常遇到svn图标不显示的问题,然后经过长时间的查找终于找到了一个最最管用的办法,在这里分享给的大家
 - (转载)CPU、内存、硬盘、指令以及他们之间的关系
			
CPU.内存.硬盘.指令以及他们之间的关系 最近读完<程序是怎样跑起来的>以及<深入理解计算机系统>的3.6.9章节后对计算机的组成有了更深入细致的了解,现总结一下对CPU.内 ...
 - 在koa中想要优雅的发送响应?看这就对了
			
背景 前不久把项目中用了很久的一个伪中间件撸成了一个npm包发布了出去. 为什么叫伪中间件?正常的中间件的引用方式, 就拿body-parser为例. var Koa = require('koa') ...
 - Spring的后处理器-BeanPostProcessor跟BeanFactoryPostProcessors
			
最近在重读spring源码(为什么要重读?因为不得不承认,去年跟着<深入解析sping源码>一书过了一遍spring的源码,除了满脑袋都是各种BeanFactory跟BeanDefinit ...
 - 【WebApi系列】浅谈HTTP在WebApi开发中的运用
			
WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...
 - MySQL中间件之ProxySQL(7):详述ProxySQL的路由规则
			
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.关于ProxySQL路由的简述 当ProxySQL收到前端app发 ...