javascript - Typescript-gränssnitt för standardexport
Jag har en mycket grundläggande mappstruktur för konfigurationsfiler som ser ut så här:
/config
/button
/colors
/index
Koden ser ut så här:
colors.ts
export interface Colors {
[key: string]: string,
}
export default {
black: '#111',
grey: '#999',
green: '#4c8857',
red: '#bd1414',
white: '#fff',
};
index.ts
import colors from './colors';
export default {
button,
colors,
};
Jag får följande fel:
Could not find a declaration file for module './colors'. '/xxxxx/styles/config/colors.js' implicitly has an 'any' type.
Jag är helt ny på Typescript och kan inte hitta några handledningar eller exempel online som tydligt förklarar vad jag har gjort fel här.
Svar #1
Det finns 2 problem: du importerar inte gränssnittet korrekt på grund av ett fel i versalisering:
import colors from './colors';
export interface Colors {
försök
import {Colors} from './colors';Men här exporterar du helt enkelt "Colors"-gränssnittet, inte färgobjektet.
koden du kanske gillar skulle vara något i stil med:
export interface Colors {
[key: string]: string,
}
export const defaultColors: Colors = {
black: '#111',
grey: '#999',
green: '#4c8857',
red: '#bd1414',
white: '#fff',
};
Importera det sedan
import {defaultColors} from './colors'
Obs: om du har problem med importeringar, rekommenderar jag starkt att använda en IDE som Webstorm som automatiskt kan importera rätt beroenden.
Svar #2
Kan jag föreslå att du låter Typescript härleda typerna åt dig. Du har sannolikt mer exakta typer än om du definierar ett gränssnitt med [key: string]: string.
Om du inte vill använda en default-export skulle jag föreslå att bara exportera följande:
export const Colors = {
black: '#111',
grey: '#999',
green: '#4c8857',
red: '#bd1414',
white: '#fff',
};
Du skulle då importera import { Colors } från './colors'
Om färger är det enda/huvudsakliga i colors-filen kan du gå vidare och exportera med default så här:
const colors = {
black: '#111',
grey: '#999',
green: '#4c8857',
red: '#bd1414',
white: '#fff',
};
export default colors;
Du skulle sedan importera import Colors from './colors'
