TypeScript 快速上手

数据类型

在 JavaScript 当中是没有数据类型的,应该说是在声明变量的时候不需要声明数据类型,所以就会有问题,而且有很多问题是在编写代码的时候不能被发现,因为是动态类型,所以即使是代码编辑器也没办法对代码有正确的提示,只有在编译时才会报错,而 TypeScript 就是为了解决 JavaScript 的这些小问题而出现的,所以就先来讲一下 TypeScript 的写法

JavaScript

var num;
var str;

TypeScript

var num:number;
var str:string;

可以看见,TypeScript 和 JavaScript 的区别就是 type ,也就是说 TypeScript 是有类型的 JavaScript,在声明变量时就要规定它的类型

var num:number; 	// number 类型
var str:string;	    // string 类型
var arr1:string[];	// string 数组
var arr2:number[];	// number 数组
var obj:{};         // object 类型
var a:any;         	// 任意类型
var b:void;         // 空类型

其中 anyvoid 通常用在函数的返回类型当中

函数

函数跟 JavaScript 大体上也是一样的,不过要标明返回的数据类型,其实也可以不用,但这样的话不就又失去了 type 的作用了吗

function func1():void {
    console.log('hello world');
}

var func2 = function():void {
    console.log('hello world');
}

var func3 = ():void => {
    console.log('hello world');
}

在入参的后面也需要跟上数据类型,这样在调用时就不会出现任何参数都能塞进去的情况了

const sum = (x:number,y:number):number => {
    return x + y;
}

比如说像这样

接口

有时候需要用到入参是一个对象的时候可以这样写

const getInfo = (obj:{name:string,age:number}):string => {
    return `name: ${obj.name},age: ${obj.age}`;
}

但有些时候这样写就显得有些复杂了,这时候可以给入参加入一些约束,就需要用到接口

// 接口 用来约束对象中的参数
interface Info{
    name:string;
    age:number;
}

// 用接口作为入参
const getInfo = ({name,age}:Info):string => {
    return `name: ${name},age: ${age}`;
}

var info:string = getInfo({
    name:"张三",
	age:18
});

可选属性

可是有些时候,有些参数并不是必须的,就可以设置成可选属性,只需要在类型前加上一个 ?

interface Info{
    name:string;
    age?:number;	// 可选属性
}

const getInfo = ({name,age}:Info):string => {
    return `name: ${name} ${age?',age:' + age : ''}`;
}

var info1:string = getInfo({
	name:"张三",
    age:18		// 可选属性可以不输入
});

var info2:string = getInfo({
    name:"张三"
});

断言

有些时候我们还有可能会输入了一些多余的属性,比如不存在的属性,在传参的时候就会出现一些小问题

var info:string = getInfo({
    name:"张三",
    age:18,
    id:'name'	// 多余的属性
});

这时候就需要用到断言来让函数接受

var info:string = getInfo({
    name:"张三",
    age:18,
    id:'name'
} as Info);

索引签名

当然,还有更好的解决方法,把多余的参数也接收了

interface Info{
    name:string;
    age?:number;
    [prop:string]:any;
}

本文章首发于我的个人博客 TypeScript 学习笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JessPig

感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值