TypeScript学习(二)——静态类型变量声明

王元肉==>个人主页

大家一起加油,我喜欢分专栏将知识打碎成一份一份小知识点,一篇文章只说一个知识点,因此每篇文章篇幅较短,希望大家不要介意。如有需要可以查看专栏看看是否有该文章中涉及到的知识点进行讲解的文章,如果大家觉得有帮助,希望大家三连支持一下。

推荐阅读

前往上一篇==>搭建typeScript开发环境

ts的静态类型是什么?

给声明的变量约束一个数据类型

ts的静态类型的作用是?

是什么?

解决javascript变量的变量值数据类型动态可变导致程序中隐藏bug。

使用js举例一个bug

function computed(dividend, divisor) {
    // 两数相加保留一位小数,四舍五入
    return (dividend + divisor).toFixed(1);
}
console.log(computed(1.23, 2.26));

在这里插入图片描述

这是我们编写的一段代码,此时可以满足要求正常执行,但是这个用js编写的函数是
不健壮的。当调用者传入的参数不是数字时,将会出问题。
function computed(dividend, divisor) {
    // 两数相加保留一位小数,四舍五入
    return (dividend + divisor).toFixed(1);
}
console.log(computed(1.23, 2.26));
console.log(computed("10", "8"));

在这里插入图片描述

因为toFixed()方法是Number.prototype身上的方法,当我们传入两个字符串时,+号进
行字符串拼接之后还是一个字符串,字符串类型的变量身上是没有toFixed()这个方法的,
而使用typescript就可以在代码编译期间给与程序员提示,从而避免代码中的隐藏bug出现。

使用ts来避免这个bug

function computed(dividend: number, divisor: number) {
    // 两数相加保留一位小数,四舍五入
    return (dividend + divisor).toFixed(1);
}
console.log(computed(1.23, 2.26));
console.log(computed("10", "8"));

在这里插入图片描述

我们发现在代码编写阶段,编辑器vscode就会给出提示,提示我们将一个string类型的数据
传递给了约束为number类型的变量。就算我们强行就行编译也会给出报错。

在这里插入图片描述

ts静态类型的一些使用场景

约束一个基本数据类型

在这里插入图片描述

在接口中使用

/* 约束对象中必须有的属性以及对应的数据类型,
更多用法将在接口小节中详细讲解 */
interface Person {
    name: string,
    age: number
}

const person: Person = {
    name: 'John',
    age: 18
}

在解构赋值中使用

/* 解构重命名与ts的结合使用 */
let { a: newA , b: newB } : {a : number , b: string} = { a: 1, b: 'hhh'};
console.log(newA,newB); // 1 hhh

在函数中使用

// 给函数的返回值添加注解,限制了该函数的返回值类型为number
function add(one:number,two:number) :number {
  return one + two;
}

console.log(add(1,2)); // 3


// 函数没有返回值,添加void注解
function clog() :void{
  console.log('clog');
}

// 函数永远执行不完(死循环、函数内部报错)添加never注解
function errorFunction() :never{
  throw new Error()
  console.log('1');
}

function forEver() :never{
  while(true){}
}

// 给函数的对象参数添加注解
function fnobj({one,two} :{one:number,two:number}){
  return one + two;
}

const totalobj = fnobj({ one:1,two:2});
console.log(totalobj); // 3

联合类型

// sex的值可以是string类型也可以是number类型
var sex: string| number;
sex = "male";
console.log(sex); // "male"

可选值

// sex的值只能是female或者male
var sex: "female" | "male";
sex = "male";
console.log(sex); // "male"

… 见专栏的其它文章

前往下一篇==>变量类型约束(any,void,object,Object,unknown,undefined,null,never,string,number,boolean)
在这里插入图片描述
结束啦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LiuJie_Boom

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值