有啥办法可以让 JS 强类型化?

Posted

技术标签:

【中文标题】有啥办法可以让 JS 强类型化?【英文标题】:Is there any way to make JS strongly typed?有什么办法可以让 JS 强类型化? 【发布时间】:2021-06-05 13:36:15 【问题描述】:

javascript 是一种弱动态类型语言。我不介意动态类型,但是当我最不期望的时候,弱类型意味着对意外类型强制的很多挫败感。网上很多文章都声称可以解决这个问题,但都将弱类型与动态类型混为一谈,提出了诸如 TypeScript 之类的解决方案。我想要更类似于 Python 的类型行为的东西——动态类型变量,但没有隐式类型强制。有没有这样的语言或库?

【问题讨论】:

【参考方案1】:

不,它不是,这就是 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 应用程序框架:强类型,但老实说我从未测试过。

【讨论】:

再次强调,这是静态类型,而不是强类型。我的意思是 Python 之类的东西。 @EnderShadow8 对于你的问题的标题“有没有办法让 JS 强类型化?”正如书面和解释的那样,对于“是否有一种语言或库可以做到这一点?”,响应是否定的。我已经更新了我的回复,请参阅edit。希望对你有帮助

以上是关于有啥办法可以让 JS 强类型化?的主要内容,如果未能解决你的问题,请参考以下文章

弱类型语言强类型语言?

强类型 GraphQL 查询

以编程方式更改 .net 强类型数据集中的表名

请问object中有个数组,在js中怎么强转转成list的类型

js数组

为啥说 Python 是强类型语言