TypeScript类型化函数参数接受任何
下面是一个编译得很好的TypeScript片段(使用1.5.3)TypeScript类型化函数参数接受任何,typescript,Typescript,下面是一个编译得很好的TypeScript片段(使用1.5.3) 使用any类型的参数调用请求特定类型参数的函数怎么可能?这是因为在使用any类型时,您选择不进行类型检查 [有时]我们希望退出类型检查,让值通过编译时检查。为此,我们用“任意”类型标记这些 要避免任何故障: 使用--noImplicitAny编译器选项(或在Visual Studio中关闭允许隐式任何类型) 除非必要,否则不要使用显式任何类型(例如var x:any) 即使我现在明白了这是怎么回事,我还是觉得很奇怪。即使没有--n
使用
any
类型的参数调用请求特定类型参数的函数怎么可能?这是因为在使用any
类型时,您选择不进行类型检查
[有时]我们希望退出类型检查,让值通过编译时检查。为此,我们用“任意”类型标记这些
要避免任何故障
:
--noImplicitAny
编译器选项(或在Visual Studio中关闭允许隐式任何类型
)任何
类型(例如var x:any
)即使我现在明白了这是怎么回事,我还是觉得很奇怪。即使没有
--noImplicitAny
选项,我也会假定,当我向函数声明添加一个类型时,它将要求任何调用方传递该类型。any
的含义仍然应该是“这可以是任何东西”,但你不应该只在需要特定类型的地方传递一个“anythis”变量。@LukasH我知道你是用c#编程的。当前,any
类型的工作方式类似于c#中的动态变量(例如dynamic str=“asdf”;int num=str;
可以)。就像你应该避免在c#中使用动态类型一样,我建议你避免在TypeScript中使用any
类型。我理解你的观点,但当你将现有javascript项目转换为TypeScript时,很难避免any
。对于这种工作流,启用--noImplicitAny
不是一个选项,因为它需要重写整个代码库。我想要的any
是一个可以有任何属性的对象,但是你不能将它传递到任何需要某种类型的地方。@LukasH我打开了。
function alertNumber(a: number) {
alert(a + 1);
}
var x:any = "string";
alertNumber(x);