JavaScript & TypeScript 学习总结
JavaScript
JavaScript简介
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式
JavaScript基本语法
JavaScript 语法是一套规则,它定义了 JavaScript 的语言结构。
var x, y; // 如何声明变量
x = 7; y = 8; // 如何赋值
z = x + y; // 如何计算值
JavaScript数据类型
JavScript有两种数据类型,一是值类型,其中包括字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol;另一种是引用数据类型,包括对象(Object)、数组(Array)、函数(Function),
值类型
字符串(String)
字符串是用来存储字符的变量。字符串可以是引号中的任意文本。您可以使用单引号或双引号。
var carname="Hello world!";
var carname='Hello world!';
数字(number)
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带。
var x1=24.00;
var x2=36;
布尔(Boolean)
布尔只有两个值:true 或 false.
var x=true;
var y=false;
空(Null)和未定义(Undefined)
Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。
students=null;
school=null;
Symbol
从字面上来看,symbol类似与一种构造函数,可以通过快速调用创建一个symbol对象。
但是需要注意,与其他基本类型不同的是,它并不会默认的进行toString.
let id = Symbol("id");
JavaScript对象
在 JavaScript 中,几乎“所有事物”都是对象。
布尔是对象(如果用 new 关键词定义),数字是对象(如果用 new 关键词定义),字符串是对象(如果用 new 关键词定义)等等,所有 JavaScript 值,除了原始值(指没有属性或方法的值),都是对象。
面向对象三要素
面向对象:面向对象编程(Object Oriented Programming),所以也叫做OOP,这与我们早期的面向过程很不一样。早期计算机处理的问题都不是很复杂,所以一个算法,一个数据结构就能够很好的解决当时的问题。但是随着计算机技术的发展,要处理的计算机问题越来越复杂。为了更好的解决这样的问题,就出现了一切皆对象的面向对象编程,把计算机中的东西比喻成现实生活中的一样事物,一个对象。那现实生活中的对象都会有属性和行为,这就对应着计算机中的属性和方法(函数)。
在JavaScript中,面向对象有三大要素:继承、封装和多态。
继承
所谓继承就是在无需修改原有类的情况下,对该类进行属性和功能上面的扩展。通过继承创建的类称为子类或者派生类,被继承的类被称为父类或者超类。JS实现继承的方式有很多,比如原型继承,组合继承,寄生组合等。
封装
封装:就是把事物(属性和操作属性的方法)封装分成类,并且根据需要可以规定那些类可以访问那些属性或者方法。简答的说一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问,某个是可以给外界访问的,是共用的,而有一些只能给子类使用。
多态
通俗易懂的讲,就是同一操作当操作对象不一样时,那么执行的操作也就不同。简答的说就是把做什么和谁来做,怎么做解耦。
JavaScript函数
函数定义方法入下:
function functionname()
{
}
当调用该函数时,会执行函数内的代码。可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。
在调用函数时,可以向其传递值,这些值被称为参数。这些参数可以在函数中使用。不同的参数之间由逗号 (,) 分隔:
myFunction(argument1,argument2)
当声明函数时,可以把参数作为变量来声明。
function myFunction(var1,var2)
{
}
Type Script
Type Script简介
TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript 起源于使用JavaScript开发的大型项目 。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。因此微软开发了TypeScript ,使得其能够胜任开发大型项目。
Type Script数据类型
TypeScript中的数据类型分为两大类:原始类型、对象类型。
常用基本数据类型:number、string、boolean、undefined、null。
数字(number)
双精度 64 位浮点值。它可以用来表示整数和分数。
let x: number = 0b1010;
let y: number = 0o744;
let z: number = 6;
let o: number = 0xf00d;
字符串(String)
一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。
let name: string = "xiaomi";
let years: number = 2;
let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`;
布尔(Boolean)
只有true和false两种取值。
let flag: boolean = true;
underffined和null
共同点:只有一个值,值为类型本身(为其它值报错)。
undefined:表示声明但未赋值的变量值(找不到值)
null:表示声明了变量并已赋值,值为null(能找到,值就是null)
Type Script函数
加粗样式#### 定义函数
function function_name()
{
// 执行代码
}
调用函数
function_name()
返回返回值
function function_name():return_type {
// 语句
return value;
}
Type Script类
TypeScript 是面向对象的 JavaScript。类描述了所创建的对象共同的属性和方法。TypeScript 支持面向对象的所有特性,比如 类、接口等。
TypeScript 类定义方式如下:
class class_name {
// 类作用域
}
定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):
字段 − 字段是类里面声明的变量。字段表示对象的有关数据。
构造函数 − 类实例化时调用,可以为类的对象分配内存。
方法 − 方法为对象要执行的操作
接口
类可以实现接口,使用关键字 implements,并将 interest 字段作为类的属性使用。例子如下:
interface ILoan {
interest:number
}
class AgriLoan implements ILoan {
interest:number
rebate:number
constructor(interest:number,rebate:number) {
this.interest = interest
this.rebate = rebate
}
}
var obj = new AgriLoan(10,1)
console.log("学号是: "+obj.interest+",年级为 "+obj.rebate )
总结
通过学习JavaScript和Typescript,发现这两种语言的共同之处还是很多的,两者互有优点,相较于JavaScript,typescript有以下优点:
(1)增强代码的可读性和可维护性,强类型的系统相当于最好的文档,在编译时即可发现大部分的错误,增强编辑器的功能。
(2)包容性,js文件可以直接改成 ts 文件,不定义类型可自动推论类型,可以定义几乎一切类型,ts 编译报错时也可以生成 js 文件,兼容第三方库,即使不是用ts编写的。
(3)有活跃的社区,大多数的第三方库都可提供给 ts 的类型定义文件,完全支持 es6 规范
。