在Typescript中使用字符串文字类型

时间:2017-09-18 11:09:27

标签: typescript

我正在尝试使用具有以下定义的方法(在Angular中):

request(method: string, url: string, options?: {
    body?: any;
    headers?: HttpHeaders;
    params?: HttpParams;
    observe?: HttpObserve;
    reportProgress?: boolean;
    responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
    withCredentials?: boolean;
}): Observable<any>;

我的代码如下所示:

let options = {
    headers: headers,
    content: content,
    responseType: 'json'
};

 http.request(method, url, options)

但是我收到了这个错误:

  

错误TS2345:类型'{headers:HttpHeaders;内容:字符串; responseType:string; }'不能赋值给'{body?:any;标题?:HttpHeaders; params?:HttpParams;观察?:HttpObserve; reportProgress:?...“。属性“responseType”的类型不兼容。类型'string'不能分配给''text'|类型“json”| “arraybuffer”| “斑点”。”

由于reponseType没有像“类型ResponseType ='arraybuffer'| ... ”这样的声明类型,我如何“将”文字“json”“强制转换”为有效值这个性质?

1 个答案:

答案 0 :(得分:6)

您可以将字符串强制转换为字符串文字类型:

let options = {
    headers: headers,
    content: content,
    responseType: 'json' as 'json'
};