Как объявить тип app.locals.something?Javascript

Форум по Javascript
Ответить
Anonymous
 Как объявить тип app.locals.something?

Сообщение Anonymous »

Это тот же вопрос, что и «Как расширить типизацию Express.Application, чтобы задать типизацию для app.locals, но предложенное решение у меня не работает».
У меня есть server.ts :

Код: Выделить всё

const express = require('express');

type Message = {
author: string,
message: string
}

declare global {
namespace Express {
interface Locals {
chat: Array
}
}
}

/** Setup Express server */
const app = express();
app.use(express.json());

let sampleMessage: Message = {
author: 11
}

app.locals.resetChat = () => {
app.locals.chat = [{author: 11, message: 'Welcome to the chat!'}];
};
app.locals.resetChat();

export {};
Я специально написал 2 ошибки, чтобы проверить, работает ли проверка типов. Когда я запускаю tsc server.ts, он обнаруживает ошибку только в let sampleMessage = ..., но не влияет на app.locals.chat = .... Вот результат:

Код: Выделить всё

server.ts:24:3 - error TS2322: Type 'number' is not assignable to type 'string'.

24   author: 11
~~~~~~

server.ts:6:3
6   author: string,
~~~~~~
The expected type comes from property 'author' which is declared here on type 'Message'

Found 1 error in server.ts:24
Что не так?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -something
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»