2016-08-14 98 views
-1

通过强制更改函数参数类型。Typescript中的Cast函数参数类型

它看起来像

(<number>foo)(1) 

function foo(v : string) 
+0

在TS,你不能 “强行改变” 的任何类型。你可以做的是告诉编译器,它应该**将特定值视为特定类型。这就是所谓的“类型断言”。 – 2016-08-17 03:25:46

回答

-1

你不能改变的功能PARAM类型,但你可以投(type assert)你传递给它的参数去any

function fn(obj: string) { 
    ... 
} 

fn(1 as any); 

但是你可以使函数更通用:

function fn(obj: string | number) { 
    ... 
} 

fn(1); 
fn("str"); 

您也可以使用泛型:

function fn<T>(obj: T) { 
    ... 
} 

fn(1); 
fn("str"); 
+0

单词“cast”无处可见于TS文档或规格中。 – 2016-08-17 03:24:49

+0

@torazaburo来自[基本类型](https://www.typescriptlang.org/docs/handbook/basic-types.html):''类型断言就像其他语言中的类型转换,但不执行特殊检查或重组数据“。 –

+0

冒着迂腐的风险,这个引用最好解释为在TypeScript中我们做**而不是**使用术语“投射”。在其他语言中使用的“Cast”通常意味着我**强制更改**类型,例如,将整数转换为C中的指针。从这种意义上讲,CastScript不可能在TypeScript中使用,其中'值'或'value as type'语法只是告诉编译器**认为**'value'是'type'类型的类型,并且这只在类型兼容时才有效。为了避免混淆,我仍然认为最好避免使用“cast”这个词。 – 2016-08-17 06:32:06

相关问题