问题标签 [static-typing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
17 回答
17386 浏览

c# - 为什么 C# 是静态类型的?

我是一名尝试学习 C# 的 PHP Web 程序员。

我想知道为什么 C# 要求我在创建变量时指定数据类型。

为什么我们需要在类实例之前知道数据类型?

0 投票
5 回答
1394 浏览

refactoring - 静态/强类型和重构

在我看来,静态/强类型编程语言最宝贵的地方在于它有助于重构:如果/当您更改任何 API 时,编译器会告诉您该更改破坏了什么。

我可以想象用运行时/弱类型语言编写代码……但我无法想象没有编译器的帮助就进行重构,也无法想象在没有重构的情况下编写数万行代码。

这是真的?

0 投票
2 回答
1273 浏览

sql - sqlite 的清单类型何时有用?

sqlite 使用了作者称之为“ Manifest Typing ”的东西,这基本上意味着 sqlite 是动态类型的:如果需要,您可以将 varchar 值存储在“int”列中。

这是一个有趣的设计决定,但是每当我使用 sqlite 时,我都会像使用标准 RDMS 一样使用它,并将类型视为静态的。事实上,在其他系统中设计数据库时,我什至从未希望使用动态类型的列。

那么,这个功能什么时候有用呢?有没有人在实践中发现了它的一个很好的用途,而静态类型的列却无法做到这一点?

0 投票
2 回答
1561 浏览

f# - F# 和运算符重载:(>) 和 (^)

好的,有人可以向我解释为什么 F# 允许您重载 > 和 ^ 运算符,但不允许您使用它们吗?

如果我将我的 F# 代码编译为库并使用 VB 中的这些运算符,它们都可以工作。如果我使用 C# 中的这些运算符,除了 op_Concatenate 之外的所有运算符都可以工作(如预期的那样)。但是 F# 不仅忽略了其中的一些,静态类型检查器甚至都懒得告诉你它打算这样做。

编辑代码示例

0 投票
3 回答
9158 浏览

c# - 将类型分配给变量,将变量与通用静态类一起使用

我正在使用带有类型的通用静态类的 C# Web 服务。我想知道为什么这不能编译:

它给出了这个错误:

找不到类型或命名空间名称“type1”(您是否缺少 using 指令或程序集引用?)

当我将鼠标悬停type1在第二行代码中时,ReSharper 会显示“需要类型或命名空间名称”。嗯,type1 一种类型!这是一个类型的变量Type!如果我这样做,它也不起作用:

我希望将我的类型分配给几个不同的Type变量,并仅在测试不同的通用静态类时使用它们,而不是MySnazzyType每次都输入。任何想法,或者我坚持做:

编辑:澄清一下,MySnazzyType不是泛型类,也不是从泛型类继承。这里唯一的通用类是ConnectionPool_Accessor.

感谢 Pavel 的评论“本质上,您的问题是 C# 是一种静态类型语言”,我现在知道 Ruby 已经宠坏了我。;)

0 投票
5 回答
32296 浏览

python - Python 3 和静态类型

我并没有像我希望的那样真正关注 Python 3 的开发,只是注意到了一些有趣的新语法变化。具体来自这个 SO answer function 参数注释:

对此一无所知,我认为它可以用于在 Python 中实现静态类型!

经过一番搜索,似乎有很多关于 Python 中(完全可选的)静态类型的讨论,例如PEP 3107“向 Python 添加可选静态类型”(和第 2 部分)中提到的那些

..但是,我不清楚这进展了多远。是否有任何静态类型的实现,使用参数注释?是否有任何参数化类型的想法进入 Python 3?

0 投票
7 回答
6911 浏览

language-design - 为什么动态类型经常与解释语言相关联?

简单的问题:我用 C++/Java 等编译语言和 Python/Javascript 等解释语言做了很多编程(专业和个人)。我个人发现,当我使用静态类型语言进行编程时,我的代码几乎总是更加健壮。但是,我遇到的几乎所有解释语言都使用动态类型(PHP、Perl、Python 等)。我知道为什么编译语言使用静态类型(大部分时间),但我无法弄清楚解释语言设计中对静态类型的厌恶。

为什么陡峭的断开连接?它是解释语言本质的一部分吗?哎呀?

0 投票
17 回答
519191 浏览

programming-languages - 静态类型语言和动态类型语言有什么区别?

我经常听到新的编程语言是动态类型的,但是当我们说一种语言是动态类型的还是静态类型的时,这实际上意味着什么?

0 投票
5 回答
1175 浏览

programming-languages - 静态类型如何限制宏?

我正在阅读 Paul Graham 的“百年语言”一文。

http://www.paulgraham.com/hundred.html

在那里,他声称静态类型“排除了真正的宏”。

例如,类型似乎是研究论文的取之不尽的来源,尽管静态类型似乎排除了真正的宏——在我看来,没有它,任何语言都不值得使用。

这是真的吗?论文在哪里?我尝试在 Google 上搜索但没有成功。

0 投票
2 回答
189 浏览

static-typing - 是否有针对严格打字系统的“日益增长的反叛”的引文?

Go 语言常见问题解答明确提出了以下要求:

对 Java 和 C++ 等笨重的类型系统的反抗越来越强烈,促使人们转向动态类型语言,如 Python 和 JavaScript。

是否有(非轶事)数据实际支持这种说法?我一直觉得动态打字很草率而且很烦人,但如果我失去联系,我至少想要一些警告。