#javascript #typescript
Вопрос:
Я хочу динамически создавать объект в typescript / javascript. У меня есть массив reqParam
в объекте env, который может выглядеть следующим образом: env = {reqParams : ['fromTime', 'toTime']}
и он передается моей инициализирующей функции для динамического построения объекта
const myObject = _initObject(env.reqParams);
Я запустил функцию, но не могу понять, как правильно ввести ключ и значения в новый объект.
private _initObject(raqParams: any) {
let requestTemplate = {
bodyjson : "$util.escapeJavaScript($input.json('
Надеюсь, вы видите, чего я пытаюсь достичь. Например, вот желаемый результат для 2 параметров : от времени и до времени:
{
bodyjson : "$util.escapeJavaScript($input.json('
Ответ №1:
1 опечатка и 2 исправления, и это работает, вот так:
const _initObject = (reqParams) => {
let requestTemplate = {
bodyjson : "$util.escapeJavaScript($input.json('
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
reqParams.forEach(param => {
// build new item
let templateEntry = `$input.params('${param}')`;
// Put new item into object
requestTemplate[param] = templateEntry;
});
использование js ${}
для интерполяции строк
key = 'dynamic'
object[key] = value
даст вам объект {'dynamic':value}
))",
"cognitoUserId": "$context.authorizer.claims.sub",
"cognitoUserEmail": "$context.authorizer.claims.email"
};
reqParams.forEach(param => {
// build new item
let templateEntry = "$input.params('`param`')";
// Put new item into object
requestTemplate[`param`] = templateEntry;
});
}
Надеюсь, вы видите, чего я пытаюсь достичь. Например, вот желаемый результат для 2 параметров : от времени и до времени:
Ответ №1:
1 опечатка и 2 исправления, и это работает, вот так:
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
использование js ${}
для интерполяции строк
даст вам объект {'dynamic':value}
))",
"fromTime": "$input.params('fromTime')",
"toTime": "$input.params('toTime')",
"cognitoUserId": "$context.authorizer.claims.sub",
"cognitoUserEmail": "$context.authorizer.claims.email"
}
Ответ №1:
1 опечатка и 2 исправления, и это работает, вот так:
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
использование js ${}
для интерполяции строк
даст вам объект {'dynamic':value}
))",
"cognitoUserId": "$context.authorizer.claims.sub",
"cognitoUserEmail": "$context.authorizer.claims.email"
};
reqParams.forEach(param => {
// build new item
let templateEntry = "$input.params('`param`')";
// Put new item into object
requestTemplate[`param`] = templateEntry;
});
}
Надеюсь, вы видите, чего я пытаюсь достичь. Например, вот желаемый результат для 2 параметров : от времени и до времени:
Ответ №1:
1 опечатка и 2 исправления, и это работает, вот так:
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
использование js ${}
для интерполяции строк
даст вам объект {'dynamic':value}
))»,
«cognitoUserId»: «$context.authorizer.claims.sub»,
«cognitoUserEmail»: «$context.authorizer.claims.email»
};
reqParams.forEach(param => {
// build new item
let templateEntry = `$input.params(‘${param}’)`;
// Put new item into object
requestTemplate[param] = templateEntry;
});
return requestTemplate;
}
console.log(_initObject([‘fromTime’, ‘toTime’]));
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
использование js ${}
для интерполяции строк
даст вам объект {'dynamic':value}
))»,
«cognitoUserId»: «$context.authorizer.claims.sub»,
«cognitoUserEmail»: «$context.authorizer.claims.email»
};
reqParams.forEach(param => {
// build new item
let templateEntry = «$input.params(‘`param`’)»;
// Put new item into object
requestTemplate[`param`] = templateEntry;
});
}
Надеюсь, вы видите, чего я пытаюсь достичь. Например, вот желаемый результат для 2 параметров : от времени и до времени:
Ответ №1:
1 опечатка и 2 исправления, и это работает, вот так:
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
использование js ${}
для интерполяции строк
даст вам объект {'dynamic':value}
))»,
«fromTime»: «$input.params(‘fromTime’)»,
«toTime»: «$input.params(‘toTime’)»,
«cognitoUserId»: «$context.authorizer.claims.sub»,
«cognitoUserEmail»: «$context.authorizer.claims.email»
}
Ответ №1:
1 опечатка и 2 исправления, и это работает, вот так:
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
использование js ${}
для интерполяции строк
даст вам объект {'dynamic':value}
))»,
«cognitoUserId»: «$context.authorizer.claims.sub»,
«cognitoUserEmail»: «$context.authorizer.claims.email»
};
reqParams.forEach(param => {
// build new item
let templateEntry = «$input.params(‘`param`’)»;
// Put new item into object
requestTemplate[`param`] = templateEntry;
});
}Надеюсь, вы видите, чего я пытаюсь достичь. Например, вот желаемый результат для 2 параметров : от времени и до времени:
Ответ №1:
1 опечатка и 2 исправления, и это работает, вот так:
Комментарии:
1. Отличная работа! Мы почти на месте!!! Несколько модов с тех пор, как я работаю в typescript. Я должен был написать
const _initObject = ((reqParamsArray: string[])
. И все еще есть одна ошибка из-за параметра requestTemplate[param] :Element implicitly has an 'any' type because expression of type 'string' can't be used to index type ... No index signature with a parameter of type 'string' was found on type '{ bodyjson: string; cognitoUserId: string; cognitoUserEmail: string; }'.ts(7053)
2. вы можете попытаться установить
((param: string) => {
3. ДА. Это на самом деле то, что я сделал. Также необходимо использовать
let requestTemplate: {[index: string]:any} = {
и(reqParamsArray: string[]) =>
Может быть, вы могли бы отредактировать их в своем ответе?4. я мог бы, но тогда выход не будет работать
5. Взгляните на это. Дайте мне знать, если это имеет смысл: cutt.ly/5xeLfPs
Ответ №2:
использование js ${}
для интерполяции строк
даст вам объект {'dynamic':value}