TypeScript:Property';范围';类型上不存在
在TypeScript:Property';范围';类型上不存在,typescript,visual-studio-code,vscode-extensions,Typescript,Visual Studio Code,Vscode Extensions,在vscode语言服务器协议中声明的类型: 导出声明类型TextDocumentContentChangeEvent={ /** *已更改文档的范围。 */ 范围:范围; /** *替换范围的可选长度。 * *@不推荐使用范围。 */ rangeLength?:数字; /** *所提供范围的新文本。 */ 文本:字符串; } | { /** *整个文件的新文本。 */ 文本:字符串; }; 当我使用change.range时,VSCode发布了一个错误:属性“range”在类型“{text:s
vscode语言服务器协议中声明的类型
:
导出声明类型TextDocumentContentChangeEvent={
/**
*已更改文档的范围。
*/
范围:范围;
/**
*替换范围的可选长度。
*
*@不推荐使用范围。
*/
rangeLength?:数字;
/**
*所提供范围的新文本。
*/
文本:字符串;
} | {
/**
*整个文件的新文本。
*/
文本:字符串;
};
当我使用change.range
时,VSCode发布了一个错误:属性“range”在类型“{text:string;}”上不存在
如何检查change.range
或任何我使用错误的内容?TextDocumentContentChangeEvent
是两种类型之一,其中只有一种类型具有range
属性。你需要检查一下你有哪一种。如果您只需要范围
,则可以在
中使用进行检查:
if ("range" in change) {
// You can use change.range here
}
由于只有联合体的一侧具有范围
,TypeScript足够聪明,可以知道在if
块中,更改的完整类型是第一种类型(具有范围、范围长度和文本的类型),因此,您不必检查所有方法。现在在TextDocumentContentChangeEvent
命名空间中有两个方法:
是递增的
和是完整的
,以检查更改
是否具有范围
和范围长度
或仅文本