问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用 TypeScript 提高 JS 工程的健壮性

发布网友 发布时间:2022-04-29 21:31

我来回答

2个回答

热心网友 时间:2022-04-19 05:54

1. Typed Tuple
虽然 JavaScript 里一直没有正宗的 Tuple 类型,但是在 JavaScript 中使用 Tuple 一直都是很常见的事情,可以基于数组也可以基于对象,有了解构赋值以后用数组还是对象的代码量几乎完全相同。
在 TypeScript ,如果我们需要一个具有静态类型的 Tuple,一种方式是定义一个 interface 然后使用对象,但是这样看起来比较麻烦。
另一种方式就是直接使用 TypeScript 提供的 Tuple 类型:
let error: [number, string] = [123, 'Some Message'];
在 TypeScript 的类型标注中,当我们把类型写在方括号之前,就是 Typed Array,当类型写在方括号之中,就是 Typed Tuple 了。接着我们就可以使用类型安全的方式解构或者手动取值:
// Both correctly typed
let [code, message] = error; // code is number and message is string
let anotherCode = error[0]; // anotherCode is number
let anotherMessage = error[1]; // anotherMessage is string
2. String Literal Type
当我们需要使用静态可枚举的内容时,最正统的方式当然是使用 Enum。不过对于一些需要和已有 JavaScript 类库交互时,必须得使用 String 类型,这时候往往会难以进行静态检查(例如拼写错误)。
这时候,可以使用 TypeScript 提供的 String Literal Type:
class Socket {
on (event: 'open' | 'message' | 'error' | 'close', cb) {
// ...
}
}
let mySock = new Socket();
socket.on('message', () => {});
这样,如果传入的 String 不在预设范围内,就会报错,从而实现静态检查效果。
3. Void
对于所有没有返回值的函数或者方法,都应该声明为 Void 类型,而不是留空,后者为 Any 类型。
function log(message: string): void {
// ...
}
4. Implements Class
对于面向对象编程,组合优于继承,但是对于组合,我们往往需要先定义一个接口类型,然后再定义一个这个接口的实现类型,十分繁琐。
在 TypeScript 中,我们可以直接 Implements(而非 extends)一个(或多个)类:
class Base1 {
method1 () {}
}
class Base2 {
method2 () {}
}
class MyClass implements Base1, Base2 {
constructor (private base1: Base1, private base2: Base2) {}
method1 () { return this.base1.method1(); }
method2 () { return this.base2.method2(); }
}
这样,我们就不要像 Java 那样先定义一个 SomeInterface,再定义一个 SomeImpl,再把自己的 Class 实现 Interface,再把 SomeImpl 注进来那么麻烦了。

热心网友 时间:2022-04-19 07:12

没有rando函数。只有rand和randn
1.rand()
生成(0,1)区间上均匀分布的随机变量。基本语法:
rand([M,N,P ...])
生成排列成M*N*P... *向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
rand(5,1) %生成5个随机数排列的列向量,一般用这种格式
rand(5) %生成5行5列的随机数矩阵
rand([5,4]) %生成一个5行4列的随机数矩阵
生成的随机数大致的分布。
x=rand(100000,1);
hist(x,30);
由此可以看到生成的随机数很符合均匀分布。(视频教程会略提及hist()函数的作用)
2.randn()
生成服从标准正态分布(均值为0,方差为1)的随机数。基本语法和rand()类似。
randn([M,N,P ...])
生成排列成M*N*P... *向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
randn(5,1) %生成5个随机数排列的列向量,一般用这种格式
randn(5) %生成5行5列的随机数矩阵
randn([5,4]) %生成一个5行4列的随机数矩阵
3、matlab中random函数——通用函数,求各分布的随机数据,其用法:
y = random('norm',A1,A2,A3,m,n)
式中:A1,A2,A3为分布的参数,m,n用来指定随机数的行和列,name的取值有相关的表格来参照。
例:产生一个3行4列均值为2、标准差为0.3的正态分布随机数:
>>y =random('norm',2,0.3,3,4)
y =

2.1613 2.2587 1.8699 2.8308
2.5502 2.0956 2.1028 1.5950
1.3223 1.6077 3.0735 2.9105
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
东北人眼中的南方人? 酒店管理研究生就业很难吗 在美国学酒店管理的就业前景 怎么样 美国酒店管理研究生的就业前景怎么样? 流放者柯南克立尔城堡在哪 克立尔的堡垒怎么进入 《刺客信条》兄弟会全版修改哪里有? 跪求 我的猫用直流12V直接供电 现在烧毁 打开电源现在无反应 应该是... 感情爱上你一生不放弃,是什么歌曲名字里的歌词 起亚嘉华商务车天一热空调就不工作 家来客人了叫做来妾了 百度网盘的诱人的 TypeScript 视频教程免费链接谁有分享给我,谢谢 eclipse 中怎么使用typescript 如何在工行办理个人循环贷款的提款? typescript教程是什么? 在工行可查询个人循环贷款的哪些信息? 工行牡丹贷记卡额度不能循环使用为什么 工行的个人循环贷款适用哪些贷款种类? 工行的房贷现在不是循环贷,可以改成循环的吗? 有没有一样图片的 8个一模一样的照片 帮我收一下这张一模一样图片 在淘宝购物后,如何申请退款?如果店家不退怎么办? 装饰画图片大全黑白8个1样的,装饰不一样的 头像一模一样的图片 找一样的图片 我想找一下一样的图片 24张一样的照片可以摆成什么形状 淘宝怎么申请退款啊,在哪弄啊 一样的图片 来了妾 走了妻 猜成语 谢谢 工商银行循环贷款逾期未还,现在己归还,还能转贷吗 Echarts4.0支持typescript吗 古代可以纳妾,那么问题来了 Typescript会不会借着Angular2,成为主流编程语言 “纳妾”是怎么来的? react native 可以使用typescript开发吗 妻是妻来妾是妾,妻妾原来分高低,世人实在无道理,妻是妻来妾是妾. 民营运营商手机号怎么自己办理 小妾是怎么来的 上联:妾去妾来妾易别。 170号段和171号段哪个更好些? Linux教程 如何记录linux终端下的操作日志 被陆游休弃后,唐婉二嫁极品*,但郎有情来妾无意终成遗憾吗? 要办手机号怎么查看选号和办理 后宫.甄嬛传惠贵人是谁演的 妻作妾来妾作妻,大小本要分高低,只因丈夫变了心,将妻作妾妾作妻。 (猜谜:打一字) 华为视频使用什么格式? 后宫甄嬛传中演沈眉妆的还演过什么 描写历史文化的句子