学习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(数字信号处理器) 早年就被大 ...
随机推荐
- Django开发Web监控工具-pyDash
今天发现了一个比较有意思的监控工具,是基于Django开发的,开发大牛已经开放了源代码,向大牛致敬,同时研究研究,目前感觉这个监控比较直观,可以针对个人服务器使用,同时涉及的环境比较简单,部署起来 ...
- C++ 补遗
C++通过引用传递数组 数组形参可以声明为数组的引用.如果形参是数组的引用,编译器不会将数组实参转化为指针,而是传递数组的引用本身. 在这种情况下,数组大小成为形参和实参类型的一部分(实参长度与形参长 ...
- ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL
ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流 ...
- .net core grpc consul 实现服务注册 服务发现 负载均衡(二)
在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...
- 设置oracle主键自增长
创建test表后,创建序列: CREATE sequence seq_test INCREMENT BY 1 START WITH 1 minvalue 1 成功后,插入一条语句进行测试: I ...
- Spring 开发第一步(四)Spring与JDBC事务
Spring使用各种不同的TransactionManager来管理各种不同数据源事务底层(比如jdbc数据源.hibernate数据源.JPA数据源等等).在此基础上使用各种对应的Template来 ...
- 配置阿里yum源,设置命令
配置阿里yum源 #linux的软件包管理 安装 软件的方式有三种 .源代码编译安装() .下载python3的源代码 .解压缩源代码 .进入源代码目录,开始编译安装 .配置环境变量 .yum方式安装 ...
- cmd下查看应用端口情况
在win10开始窗口右侧的空白处点击CMD,在上方弹出窗口中选择命令提示符,双击进入 在弹出命令界面中,输入netstat -na命令后回车,如下图所示,可以看到所有目前打开的端口 如果要查看打开端口 ...
- day 42 mysql 数据库(2)
前情提要: 本节继续学习数据库 一:ddl 创建表 >字段名 >数据类型 >约束规则 >显示建表语句 修改表: 二:数据类型 >数值类型 >小数类型 >字 ...
- 【learning】vim爆改记 (如何让vim用起来像devc++)
由于本蒟蒻NOIP人品大爆发,能去冬令营,故准备开始练习使用linux下的IDE:vim 在dalao DTZ的帮助下,我装好了vim,并做了最初的配置. 然而........好难用啊,怎么和devc ...