问题描述
JavaScript 是一种弱动态类型语言。我不介意动态类型,但是弱类型意味着在我最不希望出现的意外类型强制时遇到很多挫折。网上很多文章都声称可以解决这个问题,但他们都将弱类型与动态类型混淆,并提出了诸如 TypeScript 之类的解决方案。我想要更类似于 Python 的类型行为的东西 - 动态类型变量但没有隐式类型强制。有没有一种语言或图书馆可以做到这一点?
解决方法
不,不是,这就是构建 typescript 的原因。
您的问题也是 this 的重复。看看,你可能会找到一些答案;)
也就是说,您可以使用一个好的 IDE,甚至 visual studio code 尝试帮助他们的 Javscript type checking,值得一看。
这里有一个小的实现示例
//@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 framework,它声称是一个用 TypeScript 制作的强大的 Web 应用程序框架:强类型,但老实说,我从未测试过它。