TS(一)环境搭建与基本类型
1 TypeScript 环境搭建
1 准备NodeJs环境
2 npm全局安装typeScript
npm i -g typescript
3 编写一个ts文件
4 使用tsc命令编译ts文件为js
E:\File\myNote\TypeScript>tsc hello.ts
5 使用ts-node直接运行ts文件
npm install -g ts-node
2 基本类型
基本写法
- ts文件语法存在错误也能继续编译
- ts文件可以编译为任意es版本的js文件,确保代码的兼容性,在任意浏览器都能运行
- 将js从一个动态语言变成了一个静态语言
写法一:先声明再赋值
let a: number;
a = '123';
var a;
a = '123';
写法二:声明的同时赋值
let a: number = 123;
写法三:声明的同时赋值并省略类型声明
let a = 123;
a = '123';
从写法三来看上面的写法好像都挺多余的,但是是为了应对js存在的问题:js中函数不会去考虑参数的类型和个数
function sum(a: number, b: number) {
return a + b;
}
console.log(sum(1, 2));
console.log(sum(1, '2'));;
第六行会报错了,但是仍然能够编译
类型声明
| 类型 | 描述 |
|---|---|
| number | 任意数字 |
| string | 任意字符串 |
| boolean | 布尔值 |
| 字面量 | 限制变量的值就是该字面量的值 |
| any | 任意类型 |
| unkown | 类型安全的any |
| void | 空值或undefined |
| never | 不能是任何值 |
| object | 任意的js对象 |
| array | 任意的js数组 |
| tuple | 元素,TS新增数据类型,固定长度数组 |
| enum | 枚举,TS中新增类型 |
| 联合类型
使用|来连接多个类型
let a : "123" | "456"
a = "789"
let b : number | boolean
b = "213"
均会报错
any:任意数据类型,但不建议使用
相当于对该变量关闭了TS的类型检测
let a : any;
a = 1;
a = '2';
上面的代码不会报错
在不进行类型声明的时候,变量会隐式声明为any类型
let a;
a = 1;
a = '2';
上面的代码也不会报错
unknown:未知数据类型
- unknown类型的变量在赋值的时候和any相同
- any能够赋值给任意类型的变量,而unknown不能
let a;
a = 1;
a = '2';
let b : unknown;
b = 1;
b = '2';
let c : string;
c = a;
c = b;
类型断言 as 、:告诉解析器实际类型
上面的代码添加断言后就能通过编译了:
let a;
a = 1;
a = '2';
let b : unknown;
b = 1;
b = '2';
let c : string;
c = a;
c = b as string;
c = <string> b;
let fn = function (num: number | string): void {
console.log((num as string).length)
}
fn('12345')
fn(12345)
这里需要添加断言才不会报错,但是实际运行的时候仍然会报错(下面的fn传递的实际时number),所以类型断言仅仅只是欺骗了编译器,需要慎重使用
类型断言的使用技巧:向window上添加属性
(<any>window).abc = 123
不添加断言是不允许这样做的,因为window上并没有abc这个属性
函数的类型声明
function fun() : void {
}
&交叉类型
同时拥有交叉的类型的所有属性
interface People {
name: string,
age: number
}
interface Man {
sex: number
}
const liu = function (man: People & Man) {
console.log(man)
}
liu({
name: 'liu',
age: 26,
sex: 1
})
TS(一)环境搭建与基本类型的更多相关文章
- ts开发环境搭建
ts为typescript的缩写,是javascript的超集. npm源改为国内 由于 Node 的官方模块仓库网速太慢,模块仓库需要切换到阿里的源. npm config set registry ...
- Ts环境搭建
一.ts环境搭建 安装node.js,用dos命令npm全局安装typescripe包环境 进入vscode官网下载zip文件解压后使用code.exe
- linux内核学习之一:环境搭建--安装Debian7.3
本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...
- TypeScript环境搭建
环境搭建 本篇将简单介绍一下TypeScript,并记录开发环境的搭建.使用Visual Studio Code进行一个简单的Demo开发过程. 第一部分.简介 TypeScript是一种由微软开发的 ...
- ReactNative之从HelloWorld中看环境搭建、组件封装、Props及State
开篇呢,先给大家问个好,今天是中秋节,祝大家中秋节快乐!!虽然是中秋节,但是木有回家还是总结一下知识点写写博客吧,想着昨天总结一下的,但是昨天和几个同学小聚了一下,酒逢知己总是千杯少呢,喝的微醺不适合 ...
- wnmp(windows+nginx+mysql+php)环境搭建和配置
要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); nginx-1.4.7;MySQL Server 5.5php-5.4.39-nts 下载地址 环境下载 Nginx是 ...
- Sklearn环境搭建与常用包
开发环境搭建 直接安装Anaconda IPython IPython是公认的现代科学计算中最重要的Python工具之一.它是一个加强版的Python交互命令行工具,有以下几个明显的特点: 1. 可以 ...
- TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建
1.TypeScript完全解读-开发环境搭建 初始化项目 手动创建文件夹 D:\MyDemos\tsDemo\client-demo 用VSCode打开 npm init:初始化项目 然后我们的项目 ...
- Java Web项目实战第1篇之环境搭建
写在前面的话 从今天开始一个Java Web实战项目,参考自 http://blog.csdn.net/eson_15/article/details/51277324 这个博客(非常感谢博主的分享精 ...
- 写给前端同学的C++入门教程(一):概述和环境搭建
说明:本人是前端er,因为最近对 UE4(一个游戏开发引擎)产生了兴趣,而这个引擎源开发游戏时需要用到 C++ ,所以就开始入坑 C++ 了.现将自己学习 C++ 的笔记整理并分享出来,以便一些想入门 ...
随机推荐
- Verilog标识符与关键字
Verilog标识符与关键字 1.标识符: Verilog HDL中的标识符是指用来声明数据,变量,端口,例化名等除关键字外的所有名称的组合.如:input a, 这里a就是一个标识符,用来代表一个输 ...
- 面向对象ooDay8
精华笔记: 接口: 是一种数据类型(引用类型) 由interface定义 只能包含常量和抽象方法(所有数据默认都是常量,所有方法默认都是抽象的) 接口不能被实例化 接口是需要被实现/继承的,实现/派生 ...
- linux安装mongo-c-driver
yum install mongo-c-driver sudo yum install cmake openssl-devel cyrus-sasl-devel $ wget https://gith ...
- Jenkins系列(1)-离线安装插件
插件地址:http://updates.jenkins-ci.org/download/plugins/
- 【内存管理】ION内存管理器浅析(system contig heap)
system contig heap与system heap 从代码中我们看到system contig heap与system heap同属一个文件中,ion_system_heap.c 相同点:它 ...
- java锁之初相见
废话不多说,先上锁的分类图 1.乐观锁&悲观锁 悲观锁 悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,把别的线程阻塞住,最终确保数据不会被别的线程修改. ...
- Oracle-登录的用户名和密码大小写敏感
Oracle-登录的用户名和密码大小写敏感
- 7. 基础增删改 - 创建管理员用Model-Drive App管理后台信息 - 创建Model-Driven App(什么是model-driven app)
一..什么是Model-Driven App? Model-Driven App是一个以组件为中心的应用程序开发方法,它不需要通过代码来运行,而且可以根据自己的需求来设计布局,编写出各种简单或者复 ...
- 网络安全(中职组)-B模块:服务远程控制
任务四:服务远程控制任务环境说明:服务器场景名:20200609(关闭链接)服务器场景操作系统:未知服务器场景用户名:root服务器场景密码:Admin123 1. 通过本地PC中渗透测试平台K ...
- 认识内存和Cache
认识内存和Cache 操作系统学习笔记,如有错误,还望指出. 我们有什么问题 什么是内存? 什么是Cache? 为什么需要Cache? 程序的局部性原理 这是个前置芝士点. 定义: 程序的局部性原理是 ...