Часть проблемы заключается в том, что примеры написаны для JavaScript, а не для TypeScript, и строгая проверка типов в TS вызывает проблему.
Как вы обнаружили, обращение к нему с помощью индекса, а не с помощьюсобственность дает вам то, что вам нужно.Это допустимый обходной путь, хотя и немного хакерский.
Однако основная проблема заключается в том, что при экспорте DialogflowConversation
тип TUserStorage
определяется как объект без особых свойств.Из источника (по крайней мере, на момент написания этой статьи):
export class DialogflowConversation<
TConvData = {},
TUserStorage = {},
TContexts extends Contexts = Contexts,
> extends Conversation<TUserStorage>
при создании объекта app
вы можете определить здесь свои собственные типы, если у вас есть определенные свойстваВы хотите проверить.Из выпуска 188 (который иллюстрирует это с типом TConvData
) вы можете сделать что-то вроде:
interface LoginStorage {
authToken?: string
}
const app = dialogflow<{}, LoginStorage>();
Это может быть доказано , что вы хотите GenericStorageВозьмите такой объект, хотя я не достаточно опытен с TypeScript, чтобы понять, действительно ли это хорошее решение:
interface GenericStorage {
[propName: string]: any;
}
const app = dialogflow<GenericStorage, GenericStorage>();
Я открыл ошибку в библиотеке, предполагая, чточто-то в этом роде должно быть сделано по умолчанию.