我有一个node.js应用程序,它将一些配置信息附加到global对象:
global.myConfig = {
a: 1,
b: 2
}
Run Code Online (Sandbox Code Playgroud)
TypeScript编译器不喜欢这个,因为该Global类型没有名为的对象myConfig:
TS2339:"全局"类型中不存在属性"myConfig".
我不想这样做:
global['myConfig'] = { ... }
Run Code Online (Sandbox Code Playgroud)
如何扩展Global类型以包含myConfig或仅告诉TypeScript闭嘴并信任我?我更喜欢第一个.
我不想改变里面的声明node.d.ts.我看到了这个SO帖子并尝试了这个:
declare module NodeJS {
interface Global {
myConfig: any
}
}
Run Code Online (Sandbox Code Playgroud)
作为扩展现有Global界面的一种方式,但它似乎没有任何影响.
我正在研究可访问性并认为"我只是alt在我的项目中创建一个必需的属性." 我的目标是,img如果alt没有提供属性,我的反应应用中的所有标签都会抱怨.所以,我创建了一个.d.ts文件,其中添加了以下内容:
import { HTMLAttributes } from 'react';
declare module 'react' {
export interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {
alt: string;
}
}
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
'alt'的所有声明必须具有相同的修饰符.
后续属性声明必须具有相同的类型.属性'alt'必须是'string |类型 undefined',但这里有'string'类型.
有没有办法表明我试图覆盖,而不是扩展?或者有更好的方法来解决这个问题吗?