学习angualr之前需要了解的typeScript知识
enum Gender{
male,
female
}
var sex:Gender;
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'; // 报错
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')
})
// 不报错
function ajax(url: string, success: (res: string, code: number) => vodi, error: (code:number) => void) {
;
}
ajax('1.txt', () => {}, () => {}); // 参数和返回值都有约定
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
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 Person {
public name: string,
private age: number
}
var p = new Person();
p.name = 'jason'; // 报错,name只能在class内部使用
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知识的更多相关文章
- 学习Scala: 初学者应该了解的知识
Scala开发参照清单 这里列出在开发一个Scala工程中需要参照的资料. 官网网站 http://www.scala-lang.org/ 文档网站 http://docs.scala-lang.or ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
这篇文章主要介绍了学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等),需要的朋友可以参考下 Ruby 这个就不用多说了 RVM 用于帮你安装Rub ...
- 总结了零基础学习Java编程语言的几个基础知识要点
很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面 初学者先弄清这 ...
- [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
[源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...
- 学习Java,还需要学好哪些知识
很多人认为学好一门程序语言就需要学好逻辑,其实这对于很多人而言是对的,但是真的对于需要写程序的学员来说,只有逻辑好其实是不够的,如果你能具备以下几项能够为你在程序编译中大大提高工作效率.现在昆明jav ...
- Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)
自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...
- 学习Spring必学的Java基础知识(2)----动态代理
Spring AOP使用动态代理技术在运行期织入增强的代码,为了揭示Spring AOP底层的工作机理,有必要对涉及到的Java知识进行学习.Spring AOP使用了两种代理机制:一种是基于JDK的 ...
- 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装
高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...
随机推荐
- Eclipse ADT 代码注释模版
具体怎么用: 将下面的内容拷贝出来保存为XML文件,进入,Eclipse :Window --> Java --> Code Style --> Code Templates-> ...
- 申请Let's Encrypt通配符HTTPS证书
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d "*.xxx.com" --ma ...
- 曲演杂坛--重建索引后,还使用混合分区么?(Are mixed pages removed by an index rebuild?)
原文来自:http://www.sqlskills.com/blogs/paul/mixed-pages-removed-index-rebuild/ 在SQL SERVER 中,区是管理空间的基本单 ...
- [javascript]IIFE立即执行的函数表达式
近况:最近一直忙着找实习没有更新,不过学习还是在继续的.最近在写Node.js又稍带把javascript的角落知识捡了一遍,过半个月打算去看看python和一些CSS深层的书和博客.工作找的还好,拿 ...
- [JS] IE下ajax请求不生效或者请求结果不更新
问题描述: IE8及以下版本里用jQuery发简单的GET时,第一次或者新开窗口后的请求没问题,可以正确返回结果.但是之后刷新页面或者触发某些操作得到的ajax请求结果永远和第一次一样. 问题分析: ...
- C# 多线程 弹出模态MessageBox的一种方法
在多线程中,有时候使用MessageBox.Show方法弹出对话框,弹出的Messagebox不是模态的,不能满足我的要求.经过研究,如下实现 private void button1_Click(o ...
- 解决win10不显示coreldraw x4/5/6菜单栏
1.下载插件 https://pan.baidu.com/s/1nQ1kgUNSD7-9sjUbv5M6XA 复制链接下载插件 2.导入插件到工作区 3.设置工具栏显示 4.把工具栏拖动到菜单栏位置, ...
- day85 ModuleForm Form组件
1 forms组件与modelform组件 forms组件: https://www.cnblogs.com/yuanchenqi/articles/9036474.htmlmodelForm组件:h ...
- openstack 创建虚拟机的时候报错: Failed to allocate the network(s), not rescheduling.].
错误: 实例 "test-gtj" 执行所请求操作失败,实例处于错误状态.: 请稍后再试 [错误: Build of instance 5ea8c935-ee07-4788-823 ...
- 935. Knight Dialer
A chess knight can move as indicated in the chess diagram below: . This time, we place o ...