javascript - 有什么办法可以让 JS 强类型化?
问题描述
JavaScript 是一种弱动态类型语言。我不介意动态类型,但是当我最不期待的时候,弱类型意味着对意外类型强制的很多挫败感。网上很多文章都声称可以解决这个问题,但都将弱类型与动态类型混为一谈,提出了诸如 TypeScript 之类的解决方案。我想要更类似于 Python 的类型行为的东西——动态类型变量,但没有隐式类型强制。有没有这样的语言或库?
解决方案
不,不是,这就是构建打字稿的原因。
您的问题也与此类似。看看,你可能会找到一些答案;)
也就是说,您可以使用一个好的 IDE,甚至Visual Studio 代码也尝试帮助他们进行Javscript 类型检查,值得一看。
这里是一个小的实现示例
//@ts-check
export class Dog {
/**
* @param {string} name
* @param {number} age
*/
constructor(name, age) {
super()
this.name = name
this.age = age
}
speak () {
console.log(`${this.name}: No! No more talk!`)
}
}
new Dog(7, 'Wez').speak() // <-- You should get an error here, it should be Dog('wez', 7)
编辑
如果您真的想为网络提供强大的类型语言,您可以:
- 使用webassembly将你的 python 代码带入浏览器 -> https://github.com/wasmerio/wasmer-python
- 看看typescene 框架,它声称是使用 TypeScript 制作的强大的 Web 应用程序框架:强类型,但老实说我从未测试过它。
推荐阅读
- prometheus - 无法在 grafana 中导入仪表板
- validation - CAVV 和 XID 长什么样?
- r - 按网格区域规范化 R 星对象?
- swift - 如何在 Swift 中的一个数组中声明不同的结构
- java - SQL 大幅增加来自多个 JOINS 的总和
- c# - .net 4.5.1 不支持在后面的代码中编写“System.AppContext”吗?
- python - 如何在 Python unittest 中添加用于集合比较的相等函数
- angular - 如何在 ag-grid 中的一行顶部覆盖控件?
- python - 在没有循环的情况下更改数据框单元格的类型
- ios - 为什么 CarPlay 在真车中会崩溃?