WebStorm 9 TypeScript 智能感知(代码完成)失败
WebStorm 9 TypeScript intellisense (code completion) fails
我导入了带有一些 class 定义的外部库。智能感知仅部分起作用,请参见下文。
import BB = require('../services/BB');
var r = new BB.Model.Repository();
var name: string = r.name; // Ok, we've got intellisense here
var func = (repo) => { }; // No intellisense here -- ok of course
var func2 = (repo: BB.Model.Repository) => { }; // No intellisense -- why?
var func3 = function(repo: BB.Model.Repository) { }; // No intellisense -- why?
var func4: (r: BB.Model.Repository)=>void = function(repo): void { }; // No intellisense -- why?
var func5 = () => {
var repo = new BB.Model.Repository();
var name:string = repo.name; // Ok, we've got intellisense here
};
var func6 = (repo: any) => {
var name: string = (<BB.Model.Repository>repo).name; // No intellisense here -- why?
};
问题是什么?我的图书馆有什么问题吗,还是只是 WebStorm?
顺便说一句,库导出以这种方式跨越几个文件:
// BB.Model.Repository.ts
export = Repository;
class Repository { name: string; }
// BB.Model.ts
export import Repository = require("./BB.Model.Repository");
// BB.ts
export import Model = require ('./BB.Model');
import BB = require('../services/BB');
只有在有文件 /services/BB.ts
的情况下,才能 使用默认的 TypeScript 语言服务 。我怀疑没有这样的文件,你得到的智能感知只是一些偶然的 + 不可靠的代码分析,由 Webstorm
完成,就像它对 JavaScript 所做的一样。 JavaScript 的智能感知 从不保证 可靠。
TypeScript 的类型声明中可能没有类型 BB.Model.Repository
space。
我已经报告了这个问题,JetBrains 创建了一个问题:
https://youtrack.jetbrains.com/issue/WEB-14844
更新。他们说它已在版本 10 中修复。
我导入了带有一些 class 定义的外部库。智能感知仅部分起作用,请参见下文。
import BB = require('../services/BB');
var r = new BB.Model.Repository();
var name: string = r.name; // Ok, we've got intellisense here
var func = (repo) => { }; // No intellisense here -- ok of course
var func2 = (repo: BB.Model.Repository) => { }; // No intellisense -- why?
var func3 = function(repo: BB.Model.Repository) { }; // No intellisense -- why?
var func4: (r: BB.Model.Repository)=>void = function(repo): void { }; // No intellisense -- why?
var func5 = () => {
var repo = new BB.Model.Repository();
var name:string = repo.name; // Ok, we've got intellisense here
};
var func6 = (repo: any) => {
var name: string = (<BB.Model.Repository>repo).name; // No intellisense here -- why?
};
问题是什么?我的图书馆有什么问题吗,还是只是 WebStorm?
顺便说一句,库导出以这种方式跨越几个文件:
// BB.Model.Repository.ts
export = Repository;
class Repository { name: string; }
// BB.Model.ts
export import Repository = require("./BB.Model.Repository");
// BB.ts
export import Model = require ('./BB.Model');
import BB = require('../services/BB');
只有在有文件 /services/BB.ts
的情况下,才能 使用默认的 TypeScript 语言服务 。我怀疑没有这样的文件,你得到的智能感知只是一些偶然的 + 不可靠的代码分析,由 Webstorm
完成,就像它对 JavaScript 所做的一样。 JavaScript 的智能感知 从不保证 可靠。
TypeScript 的类型声明中可能没有类型 BB.Model.Repository
space。
我已经报告了这个问题,JetBrains 创建了一个问题: https://youtrack.jetbrains.com/issue/WEB-14844
更新。他们说它已在版本 10 中修复。