2016-08-14 124 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