1.编译型语言
2.强类型语言
3.真正的面向对象的语言: 有借口、有泛型、有枚举、有访问修饰符
AMD类型的面向对象的语言
 
 
npm install -g typescript        下载编译工具
 
编译ts文件       tsc xxx.ts/xxx.tsx/xxx.d.ts
 
 
一、有类型的script   ----  在编译期进行检查,ts只编译不执行
    【声明变量】
      var 变量名: 类型
      var a:number;
 
    【基本类型】
    number
    string    
    boolean   : 只有两个值,true、false
    symbol  :  
    void  :  空,一般情况下用做返回值。不允许赋值
    null : 只有一个类型 --- null 
    undefined : 只有一个类型---undefined
    enum   :  枚举, 列举所有的东西 
            性别、星期---有限的可能性
 
enum Gender{
male,
female
} var sex:Gender;
   
any :  任何类型。 变体变量---没有固定类型,可以是任何类型
 
    js的变量都是变体变量.
 
var a: any;

a = 12;
a = 'abc';

【类型推理、类型推测】---根据初始化的值推测类型(隐式类型推测)

【类型推理、类型推测】---根据初始化的值推测类型(隐式类型推测)

var a = 13;

a = 'abc';  //  报错  , ts 已经推理 a: number;
var a;

a = 12;
a = 'abc'; // a: any;

【冲突检测】编译器会自动排除掉无用的选项

enum WEEK {
SUN,
SAT,
FRE,
TUS
} var w = WEEK.SUN; switch(w) {
case WEEK.SUN:
break;
case WEEK.STA;
break;
} // 报错,不会出现WEEK.STA,所以ts编译器认为不应该写第二种case

【联合类型】

var a:number | string;

a = 12;
a = 'abc';
var a:number | string;

var b: boolean;

a = b ? 12: false;
// 报错,false不能作为结果

【数组的类型】

var arr = [12, 5, 8];    // 隐式类型声明  var arr:number[] = [12, 5, 8];

arr[3] = 'abc';   //  报错
arr: 类型[]  = [];
 
数组其实还是一种泛型;
 
Array --- 典型的泛型  
 
interface Array<T> {
reverse(): T[];
sort(compare?: (a: T, b:T) => number):T[];
...
}
var arr:number[] = [12, 5];

//  等同于

var arr: Array<number> = new Array<number>();

【函数的类型】 参数和返回值都可以定义类型

function show(a: any, b:number) {
console.log(a + b);
} show(12,5); // 报错

参数不仅可以有类型还有函数签名检查(匹配参数的数量)

function show(a: number, b: number) {
console.log(a + b);
} show(12); // 报错

返回值

function sum(a:number, b:number):string {
return a + b;
} console.log(sum(12,5)); // 报错,返回值是string

【外部变量声明】 declare

console.log(a);    // 报错
declare var $;

$(function() {
$('#div')
})
// 不报错
window、 document   叫内置外部声明,不用再次声明。
 
【函数签名】
 
function ajax(url: string, success: (res: string, code: number) => vodi, error: (code:number) => void) {
;
} ajax('1.txt', () => {}, () => {}); // 参数和返回值都有约定
 
【类型】
 
1.基本类型
2.联合类型
3.函数签名
4.对象类型
5.联合类型(复合类型)
 
 
【符合类型--可选类型】
 
var point: {x:number, y:number, z?:number};

point = {x:12,y:5}

point = {x:12,y:5,z:8}
function show(a: Object) {

}
// json
二、接口:interface
 
java中:
 
class Click implements inter {

}
 
接口就是一种约定和限制,是一种必须遵守的规范
 
    比如说 汽车---接口:能开、必须加油
 
interface Point {
x: number,
y: number,
z?: number
} var p:Point p = { x:12, y:5};

三、class

class Person {
// 成员属性
name: string;
age: number; // 构造器
constructor(name: string, age:number) {
this.name = name;
this.age = age;
} // 成员方法
showMe() {
console.log(`我的名字是${this.name},我的年龄是${this.age}`)
}
} var p = new Person('jason', 18); p.showMe();
包括class、extend、多继承
 
 
【访问修饰符】
 
1.public          共有属性            任何类可访问,全局
2.private         私有属性            只有类内部可以访问
3.protected    受保护--友元
 
class Person {
public name: string,
private age: number
} var p = new Person(); p.name = 'jason'; // 报错,name只能在class内部使用
四、泛型。(模板)
 
请区别于any,泛:宽泛(主要原因)
 
class Calc<T> {
a: T;
b: T; constructor(a:T, b: T) {
this.a = a;
this.b = b;
} show(c: T) {
console.log(this.a);
}
} var obj = new Calc<number>(12, 5); obj.a = 12;
obj.b = 'abc'; // 没生命类型为any,但是<number>会替换class中的<T> obj.show(99);

有限制,但不是any,是一个有范围的any。

 

学习angualr之前需要了解的typeScript知识的更多相关文章

  1. 学习Scala: 初学者应该了解的知识

    Scala开发参照清单 这里列出在开发一个Scala工程中需要参照的资料. 官网网站 http://www.scala-lang.org/ 文档网站 http://docs.scala-lang.or ...

  2. Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

    JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...

  3. 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)

    这篇文章主要介绍了学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等),需要的朋友可以参考下     Ruby 这个就不用多说了 RVM 用于帮你安装Rub ...

  4. 总结了零基础学习Java编程语言的几个基础知识要点

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这 ...

  5. [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识

    [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...

  6. 学习Java,还需要学好哪些知识

    很多人认为学好一门程序语言就需要学好逻辑,其实这对于很多人而言是对的,但是真的对于需要写程序的学员来说,只有逻辑好其实是不够的,如果你能具备以下几项能够为你在程序编译中大大提高工作效率.现在昆明jav ...

  7. Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)

    自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...

  8. 学习Spring必学的Java基础知识(2)----动态代理

    Spring AOP使用动态代理技术在运行期织入增强的代码,为了揭示Spring AOP底层的工作机理,有必要对涉及到的Java知识进行学习.Spring AOP使用了两种代理机制:一种是基于JDK的 ...

  9. 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装

    高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...

随机推荐

  1. ASP.NET MVC 4 中Razor 视图中JS无法调试

    解决方法 1.首先检查IE中这2个属性是否勾选了. 2.选择IE浏览器进行调试,调试方法有2种     A:采用debugger;的方法,如下图所示: 这时不用调试断点就会在debugger位置中命中 ...

  2. kubernetes 应用基本准则

    不要直接部署裸的Pod. 为工作负载选择合适的Controller. 使用Init容器确保应用程序被正确的初始化. 在应用程序工作负载启动之前先启动service. 使用Deployment hist ...

  3. CUDA开发 - CUDA 版本

    "CUDA runtime is insufficient with CUDA driver"CUDA 9.2: 396.xx CUDA 9.1: 387.xx CUDA 9.0: ...

  4. Algebraic Kernel ( Arithmetic and Algebra) CGAL 4.13 -User Manual

    1 Introduction Real solving of polynomials is a fundamental problem with a wide application range. T ...

  5. [Swift实际操作]七、常见概念-(2)点CGPoint和变形CGAffineTransform的使用

    本文将为你演示点对象CGPoint的使用,其中CG表示来自CoreGraphic(核心图形)这个跨平台框架 首先导入需要使用的两个框架第一个框架表示界面工具框架第二个框架表示核心绘图和动画框架 imp ...

  6. 00-python概述。

    人生苦短,我用Python. -发展历史: - 1989年,由Guido van Rossum开始开发, - 1991年,发布第一个公开发行版,第一个Python编译器(同时也是解释器)诞生. - 2 ...

  7. centos7 防火墙与端口设置、linux端口范围

    防火墙 启动防火墙: systemctl start firewalld 查看防火墙状态: systemctl status firewalld 关闭防火墙: systemctl stop firew ...

  8. Go语言学习笔记(4)——数组和切片

    1 数组的特点: 长度固定.元素数据类型相同.下标从0开始 1.1 声明和初始化: var array_name [size] type         var arr1 [10] float32   ...

  9. Swift 4.0 废弃的柯里化

    // 柯里化 // http://www.jianshu.com/p/6eaacadafa1a                               Swift 2.0 柯里化方法 (废弃) / ...

  10. Spring 事务传播行为实验

    一.Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为.有以下选项可供使用: PROPAGATION_REQUIRED--支持当前事务,如果当前 ...