No entiendo por qué monaco-editor no puede funcionar con archivos mecanografiados.
Aquí está el código fuente que pasé al editor:
import React from 'react'; import styles from './Test.scss'; export const Test = (foo: number) => { return ( <div className={styles.container}>Test</div> ); }Y las opciones:
Idioma = typescript +
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ target: monaco.languages.typescript.ScriptTarget.Latest, allowNonTsExtensions: true, moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs, module: monaco.languages.typescript.ModuleKind.CommonJS, noEmit: true, esModuleInterop: true, jsx: monaco.languages.typescript.JsxEmit.React, reactNamespace: "React", allowJs: true, typeRoots: ["node_modules/@types"], }); Así que le dije al editor "aquí hay un archivo TypeScript", pero foo: number show error Type annotations can only be used in TypeScript files.(8010)
¿Como lidiar con?
PD: es una aplicación web, es decir, el editor de monaco no está dentro del código VS
No configuró el idioma en "mecanografiado". Todas las configuraciones que tiene aquí están por encima del idioma base (por ejemplo, compatibilidad con JSX, destino del script, resolución del módulo, etc.).
Para establecer un idioma, use editor.setModelLanguage(yourModel, "typescript"); (si el modelo ya existe, por ejemplo, el predeterminado en el editor) o cree su propio modelo y especifique el idioma en la llamada de creación: editor.createModel(content, language, uri); .
Compruebe ITextModel.getModeId(); para ver si usa el lenguaje correcto.