学习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(数字信号处理器) 早年就被大 ...
随机推荐
- Postgresql 锁查看
之前版本 PostgreSQL 的 pg_stat_activity 视图的 waiting 字段判断会话是否等待锁资源(通俗地讲, waiting 值为true表示申请不到锁资源处于等待状态),但是 ...
- 在vs 调试进程中找不到 w3wp.exe 进程
问题如图所示: 解决办法: 1. 启动iis(internet information services)服务. 2. 打开左侧网站列表=> 右键点击自己配置的网站 => 点击管理网站 = ...
- NET项目发布到IIS上报错:HTTP 错误 403.14
NET项目发布到IIS上报错:HTTP 错误 404.0 - Not Found 原因:由于本机开发环境是Net4.5,所以虽然创建项目时选择的是net framework4.5的,但是webconf ...
- 国际化SEO优化的最佳实践
作者:Kristopher Jones 翻译 :吴祺深 欢迎访问网易云社区,了解更多网易技术产品运营经验. 让我们来说一下hreflang属性.如果你还没有关掉这个页面,那么你已经完成了这个教程最重要 ...
- kubernetes1.9管中窥豹-CRD概念、使用场景及实例
欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 默认读者有kubernetes基础概念的背景知识,因此基础概念例如有状态.pod.Replica Sets.Deployments.state ...
- Flask 语音分析
1. 安装api 百度组件 pip install baidu-aip 2.登录百度ai账号 ,建立一个账号 http://ai.baidu.com/ from aip import Aip ...
- ssh 登陆 端口转发
man ssh ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] ...
- 使用过Memcache缓存吗?如果使用过,能够简单描述下其工作原理吗?
Memcache是把所有数据保存在内存中,采用hash表的方式,每条数据由key和value组成,每个key独一无二的.Memcache采用LRU算法逐渐把过期数据清除掉.
- (samba启动失败)smb.service: main process exited, code=exited, status=1/FAILURE
按照指示,前往:journalctl -xe 没什么发现,搜的时候有人说也可以查看 journalctl -r 打出来之后我也看不出什么门道来 又看到有人说 smb 方面可以看看 testparm 我 ...
- 非对齐访问(unaligned accesses)
从CPU角度看内存访问对齐 结构体成员非对齐访问所带来的思考 ARM体系中存储系统非对齐的存储访问操作 什么是cache line? cache line就是处理器从RAM load/store数据到 ...