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(一)环境搭建与基本类型的更多相关文章

  1. ts开发环境搭建

    ts为typescript的缩写,是javascript的超集. npm源改为国内 由于 Node 的官方模块仓库网速太慢,模块仓库需要切换到阿里的源. npm config set registry ...

  2. Ts环境搭建

    一.ts环境搭建 安装node.js,用dos命令npm全局安装typescripe包环境 进入vscode官网下载zip文件解压后使用code.exe

  3. linux内核学习之一:环境搭建--安装Debian7.3

    本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...

  4. TypeScript环境搭建

    环境搭建 本篇将简单介绍一下TypeScript,并记录开发环境的搭建.使用Visual Studio Code进行一个简单的Demo开发过程. 第一部分.简介 TypeScript是一种由微软开发的 ...

  5. ReactNative之从HelloWorld中看环境搭建、组件封装、Props及State

    开篇呢,先给大家问个好,今天是中秋节,祝大家中秋节快乐!!虽然是中秋节,但是木有回家还是总结一下知识点写写博客吧,想着昨天总结一下的,但是昨天和几个同学小聚了一下,酒逢知己总是千杯少呢,喝的微醺不适合 ...

  6. wnmp(windows+nginx+mysql+php)环境搭建和配置

    要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); nginx-1.4.7;MySQL Server 5.5php-5.4.39-nts 下载地址 环境下载 Nginx是 ...

  7. Sklearn环境搭建与常用包

    开发环境搭建 直接安装Anaconda IPython IPython是公认的现代科学计算中最重要的Python工具之一.它是一个加强版的Python交互命令行工具,有以下几个明显的特点: 1. 可以 ...

  8. TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建

    1.TypeScript完全解读-开发环境搭建 初始化项目 手动创建文件夹 D:\MyDemos\tsDemo\client-demo 用VSCode打开 npm init:初始化项目 然后我们的项目 ...

  9. Java Web项目实战第1篇之环境搭建

    写在前面的话 从今天开始一个Java Web实战项目,参考自 http://blog.csdn.net/eson_15/article/details/51277324 这个博客(非常感谢博主的分享精 ...

  10. 写给前端同学的C++入门教程(一):概述和环境搭建

    说明:本人是前端er,因为最近对 UE4(一个游戏开发引擎)产生了兴趣,而这个引擎源开发游戏时需要用到 C++ ,所以就开始入坑 C++ 了.现将自己学习 C++ 的笔记整理并分享出来,以便一些想入门 ...

随机推荐

  1. eset node32卸载记录

    安装的是这个东西,卸载麻烦 1.一般的卸载软件比如wise program uninstall无论是普通卸载还是强制卸载都是实现不了的,火绒自带的文件粉碎是可以使用的,有两个目录要进行粉碎C:\Pro ...

  2. 页面与java后台之 上传文件与服务器加载

    添加相关依赖包commons-fileupload等: 页面(注:编码enctype="multipart/form-data"   文件按钮属性multiple) java    ...

  3. Sql Server新建一个只读权限的用户

    1,新建只能访问某一个表的只读用户. --添加只允许访问指定表的用户: exec sp_addlogin '用户名','密码','默认数据库名' --添加到数据库 exec sp_grantdbacc ...

  4. 2vue

    事件 v-on:click="handle" @click="handle" handle创建在methods里 <!DOCTYPE html> & ...

  5. GDB 调试 - 正确地加载调试符号文件

    一.开发流程 1. 编译可执行文件 1 #include <stdio.h> 2 #include <unistd.h> 3 4 void test() 5 { 6 char ...

  6. [Leetcode 701]二叉搜索树BST中插入元素

    题目 BST二叉搜索树中插入元素 二叉搜索树:左边<root<右边 https://leetcode.com/problems/insert-into-a-binary-search-tr ...

  7. 6、jmeter的配置元件:参数化--CSV文件

    1.参数化一些数据,就需要用到csv文件 Filename:文件位置和文件名 (和jmeter同一个目录就不需要写哪个盘 直接写文件名字就可以了) File  encoding:编码 Variable ...

  8. NRF52832的FDS程序,参考非蓝牙例程修改而来(需要增加DFU的基础上只要增加如下程序即可解决)

    /* Dummy configuration data. */ static configuration_t m_dummy_cfg = { .config1_on = false, .config2 ...

  9. Manage your references to .Net assemblies Dynamics 365 for Operations VS projects

    (Dynamics 365 for Operations was previously known as the New Dynamics AX) Dynamics 365 for Operation ...

  10. JavaScript 字符串的相关方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...