gpt4 book ai didi

javascript - Typescript 类型转换现有变量

转载 作者:行者123 更新时间:2023-12-03 05:22:20 24 4
gpt4 key购买 nike

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

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

我想将查询类型转换到另一个接口(interface):

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;
}

想法?

最佳答案

你可以像这样输入cast:

(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();
}

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

关于javascript - Typescript 类型转换现有变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41324493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com