刚学习TypeScript,但因为马上要用,主要是寻求先快速上手,而后再求精。

推荐学习网站:

1)https://www.runoob.com/typescript/ts-tutorial.html

2)TypeScript官网

3)白鹭引擎官网(针对游戏开发者)

4)流浪小猫的入门教程 (刚发现,感觉很不错)

因为以前有C++/C#/基础,通过对比学习的方式可以更快上手,本文针对与C++/C#的一些语法的不同点来接触TypeScript,而没有提到的部分意味着差别不大(因为是快速上后,了解尚浅,所以差别不大不代表完全相同)

本文不是用于学习TypeScript(如果想学习,请到上面三个网站),而是用于学习TypeScript后的复习和快速记忆。

TypeScript相比C++/C#的不同点(内容源于网络,大部分来源于Runoob):

* 分号是可选的:你可以使用分号或不使用, 分号在 TypeScript 中是可选的,建议使用。

* TypeScript数据类型有:any、number、string、boolean、数组、元组、枚举、void、null、undefined、never

* Any类型:任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,它常用于以下三种情况:

  1)变量的值会动态改变时,比如来自用户的输入,任意值类型可以让这些变量跳过编译阶段的类型检查;

  2)改写现有代码时,任意值允许在编译时可选择地包含或移除类型检查;

  3)定义存储各种类型数据的数组时

* null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。

* undefined:在 JavaScript 中, undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。

* Null 和 Undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,如数字类型,此时,赋值后的类型会变成 null 或 undefined

* 而在TypeScript中启用严格的空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型

* never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止

点(例如无限循环)

* 变量名命名规则特别点:除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。

* 变量声明方式:

  1)var [变量名] : [类型] = 值;

  2)var [变量名] : [类型]; // 初值为undefined

  3)var [变量名] = 值; // 进行类型推断,值可以说任意类型,但是区别于any类型,当确定值的类型后不能修改

  4)var [变量名];  // 同第三种,值可以说任意类型, 默认初始值为 undefined

* 类型断言

  方式1:<类型>值,如:

var str = '1' ;
var str2:number = <number> <any> str //str、str2 是 string 类型

  方式2:值 as 类型

* 类型断言之所以不被称为类型转换,是因为转换通常意味着某种运行时的支持。但是,类型断言纯粹是一个编译时语法,同时,它也是一种为编译器提供关于如何分析代码的方法

* var和let声明的区别:

  1)let 是块作用域,即其在整个大括号 {} 之内可见;

  2)let在变量声明之前就访问变量的话,会直接提示 ReferenceError,而不像 var 那样使用默认值 undefined。

* const也是变量声明的一种,const 和 let 的作用域是一致的,不同的是 const 变量一旦被赋值,就不能再改变了。如:const a: string = "Hello";

* let/const/var使用场景:大多数情况下都使用 const,除非你知道你的变量的值还会被改变,这样的话,别人阅读你的代码不用老想着这个变量的值会不会有改变。如果这个变量的值的确需要改变

,例如在 for 循环里面,那么就是用 let。这也同时意味着你以后就不要用 var 了。关于 const 的使用,一些程序员还倾向于只用来声明常量,其它情况下一律使用 let 关键字,我觉得这样也是

可行的。

持续更新中....

TypeScript快速笔记(一)的更多相关文章

  1. TypeScript快速笔记(二)

    1) TypeScript中的判断语句,可以使用非0值代表true.如: function add1(a: number, b?:number): number{ // 注意b是可选参数 consol ...

  2. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  3. [.NET] 《Effective C#》快速笔记(三)- 使用 C# 表达设计

    <Effective C#>快速笔记(三)- 使用 C# 表达设计 目录 二十一.限制类型的可见性 二十二.通过定义并实现接口替代继承 二十三.理解接口方法和虚方法的区别 二十四.用委托实 ...

  4. [.NET] 《Effective C#》快速笔记(四)- 使用框架

    <Effective C#>快速笔记(四)- 使用框架 .NET 是一个类库,你了解的越多,自己需要编写的代码就越少. 目录 三十.使用重写而不是事件处理函数 三十一.使用 ICompar ...

  5. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  6. [.NET] 《Effective C#》快速笔记 - C# 高效编程要点补充

    <Effective C#>快速笔记 - C# 高效编程要点补充 目录 四十五.尽量减少装箱拆箱 四十六.为应用程序创建专门的异常类 四十七.使用强异常安全保证 四十八.尽量使用安全的代码 ...

  7. [.NET] 《Effective C#》快速笔记(二)- .NET 资源托管

    <Effective C#>快速笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...

  8. [.NET] 《Effective C#》快速笔记(一)- C# 语言习惯

    <Effective C#>快速笔记(一)- C# 语言习惯 目录 一.使用属性而不是可访问的数据成员 二.使用运行时常量(readonly)而不是编译时常量(const) 三.推荐使用 ...

  9. Typescript 学习笔记七:泛型

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

随机推荐

  1. Vue:Elementui中的Tag与页面其它元素相互交互的两三事

    前言 公司系统在用elementui做后台开发,不免遇到一些需要自己去根据原有的功能上,加一些交互的功能.今天来介绍下我在用elementUi里的Tag标签与多选框交互的过程,东西听上去很简单,但就是 ...

  2. 解决intellij idea控制台中文乱码

    乱码原因: 1.系统语言:英文 英文系统下遇到乱码问题,分析了程序执行参数如下: ps -ef | grep java 执行后得到如下的结果,省略了classpath: /System/Library ...

  3. 利用AXI-DMA批量发送数据到DMA

    1.1 主函数 int main(void) { XGpio_Initialize(&Gpio, AXI_GPIO_DEV_ID); XGpio_SetDataDirection(&G ...

  4. luogu P1397 [NOI2013]矩阵游戏

    传送门 题目中那两个递推式显然可以写成矩乘的形式,然后十进制快速幂即可.这里不再赘述 只有两个递推式,我们可以考虑一波推式子,首先第一行的元素应该分别是\(1,a+b,a^2+ab+b,a^3+a^2 ...

  5. 理解 OutOfMemoryError 异常

    OutOfMemoryError 异常应该可以算得上是一个非常棘手的问题.JAVA 的程序员不用像苦逼的 C 语言程序员手动地管理内存,JVM 帮助他们分配内存,释放内存.但是当遇到内存相关的问题,就 ...

  6. linux Apache 的安装

    rpm –qa httpd 查询是否安装了 Apache rpm –e 包名卸载安装程序 rpm –e --nodeps 包名卸载安装程序不产生依赖 #检查是否安装有依赖库 yum install – ...

  7. 管线命令(Pipe)

    管线命令接受|前面传来的stdout,管线示意图如下所示: 管线两个需要注意的地方: 1.管线仅会处理stdout,忽略对stderr的处理 2.管线必须接受前个指令的stdin才是 那么,如果我想接 ...

  8. python碎片 - 函数参数

    一个*传参: 方式1:如果想传一个列表中的值,实参前加*.如: *[1,2,3] 方式2:直接传入一个列表,不加*.如[1,2,3],则传入的是一整个列表,包括[] 两个**传参: 方式1,:{nam ...

  9. vue开发知识点总结

    一.vue介绍 Vue.js 是一套构建用户界面(UI)的渐进式JavaScript框架,是一个轻量级MVVM(model-view-viewModel)框架. 二.数据绑定 最常用的方式:Musta ...

  10. kettle中使用mysql的tinyint 类型到slqserver的tinyint类型

    各个数据库之间的类型 定义还是有差别的 一下是我在工作中遇到的一个很奇葩的问题  mysql 中的 tinyint 类型 插入到sqlserver 的tinyint 类型 插入到 sqlserver的 ...