繁体   English   中英

Typescript Typecast现有变量

[英]Typescript typecast existing variable

假设我正在使用以下类型的模块:

interface AwesomeLibrary {
    name: string;
    query: Object;
}

我想将query类型转换到另一个界面:

interface Query {
    startDate: string;
    endDate: string;
    showAll: boolean;
}

假设有一个函数回调为我提供了AwesomeLibrary 然后,我想将query类型转换为Query 现在,这就是我所拥有的:

functionCb(response: AwesomeLibrary) {
    // This works fine
    let query: Query = response.query as Query;
    // Now, query.startDate is available
    // Do stuff to query
    // At the end, I want to send response back to another function, so I do
    response.query = query;
    otherFunction(response);

    // This does not work, but basically what I want:
    response.query = response.query as Query;
    // Then do stuff to response.query directly
    // Here response.query.startDate is not available, instead I have to use response.query['startDate']

    // Even this does not work:
    let query: Query = response.query as Query;
    response.query = query;
}

有什么想法吗?

您可以像这样键入强制转换:

(response.query as Query).startDate = (new Date()).toUTCString();

或者,您可以使用另一个变量:

let response2 = response as AwesomeLibrary & { query: Query };
response2.query.startDate = (new Date()).toUTCString();

您还可以使用以下类型的参数:

function functionCb(response: AwesomeLibrary & { query: Query }) {
    response.query.startDate = (new Date()).toUTCString();
}

但是随后您需要在调用此函数时进行强制转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM