在查看tslint规则的源代码时,我遇到了以下语句:
if (node.parent!.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Run Code Online (Sandbox Code Playgroud)
注意!
操作员之后node.parent
.有趣!
我首先尝试使用我当前安装的TS版本(1.5.3)在本地编译该文件.结果错误指向爆炸的确切位置:
$ tsc --noImplicitAny memberAccessRule.ts
noPublicModifierRule.ts(57,24): error TS1005: ')' expected.
Run Code Online (Sandbox Code Playgroud)
接下来我升级到最新的TS(2.1.6),编译它没有问题.所以它似乎是TS 2.x的特征.但是,转化完全忽略了爆炸,导致以下JS:
if (node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression) {
return;
}
Run Code Online (Sandbox Code Playgroud)
我的Google fu到目前为止都没有让我失望.
什么是TS的感叹号操作符,它是如何工作的?
我最近开始看到 TSLint 错误。它们看起来像这样:
不使用为“/Users/myname/myproject/client/src/app/likes/likee/likee.component.ts”找到的本地 TSLint 版本。要从当前工作区启用代码执行,您必须启用工作区库执行。
当我打开它们时,我在我的 .ts 文件中看到它们,它在每个 .ts 页面的第一行显示一条黄色波浪线。
我在TSLint网站上看到它说它已被弃用。
问题 1 - 这些错误的原因是什么,为什么我会突然看到它们?
问题 2 - 我应该卸载 Visual Studio Code TSLint 扩展并安装 ESLint 扩展吗?
Lint错误消息:
src/app/detail/edit/edit.component.ts [111,5]:for(... in ...)语句必须用if语句过滤
代码片段(这是一个工作代码.它也可以在angular.io表单验证部分获得):
for (const field in this.formErrors) {
// clear previous error message (if any)
this.formErrors[field] = '';
const control = form.get(field);
if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field];
for (const key in control.errors) {
this.formErrors[field] += messages[key] + ' ';
}
}
}
Run Code Online (Sandbox Code Playgroud)
知道如何修复这个lint错误吗?
正在使用的IDE是WebStorm 11.0.3,tslint已配置并可正常工作,但由于它尝试解析大型*.d.ts库文件而挂起.
有没有办法忽略特定的文件或目录?
我刚开始使用带有typescript的create-react-app
create-react-app my-app --scripts-version=react-scripts-ts
Run Code Online (Sandbox Code Playgroud)
并且默认的tslint.json配置不允许console.log().
我怎么能(现在)启用console.log?
相关文档位于 https://palantir.github.io/tslint/rules/no-console/.但是他们没有说明这一行:
"no-console": [true, "log", "error"]
Run Code Online (Sandbox Code Playgroud)
我搜索并找到了这个tslint.json配置文件的语法,所以我尝试了这个:
"rules": {
"no-console": [true, "warning"]
}
Run Code Online (Sandbox Code Playgroud)
试图获取只是警告的日志消息.但那没用.
我已经注释掉了我所拥有的一些console.log()行,但希望将来能够这样做.
我目前对tslint有一个问题,希望有人能指出我正确的方向.
我正在尝试使用Angular2框架提供的HTTP发送HTTP GET请求.有了这个请求,我必须指定内容类型和承载认证令牌.
我的代码示例:
let headers = new Headers();
let authToken = this._user.getUser().JWT;
headers.append('Content-Type', 'application/json');
headers.append('Authorization', `Bearer ${authToken}`);
let options = new RequestOptions({ headers: headers });
this._http.get('http://' + url '/', options)
.timeout(3000)
.subscribe(
(res) => {
Run Code Online (Sandbox Code Playgroud)
然而,这是有效的,tslint抱怨说
"TS2345:类型'{headers:Headers;}'的参数不能分配给'RequestOptionsArgs'类型的参数.属性'headers'的类型是不兼容的.类型'Headers'不能分配给'Headers'类型.两种不同的类型存在此名称,但它们不相关."标题"类型中缺少属性"键".
我很感谢这种支持.
是否可以使用tslint lint整个文件夹?
使用eslint可以eslint ./src
验证整个文件夹.
当我尝试为tslint做同样的事情时 - 我收到了一个错误Error: EISDIR: illegal operation on a directory
.在他们的网站示例中 - 他们展示了如何验证单个文件,通常情况并非如此.
是否可以在没有额外的东西的情况下验证我的项目,例如gulp-tslint
,从命令行?
该// @ts-ignore
评论使打字稿编译器忽略它下面的线.
如何用Typescript忽略整个代码块?
我在申请中注意到TsLint建议:
static $inject = [
'$http',
'$q',
'$scope',
'configService',
'stateService',
'utilityService'
];
Run Code Online (Sandbox Code Playgroud)
对于上述情况:
Message 2 TsLint: ' should be "
Run Code Online (Sandbox Code Playgroud)
这是一个适用于Typescript的建议标准吗?
我是TypeScript的新手,我想知道是否存在一种重写代码的好方法,以避免在以下代码中出现TSLint错误"不允许通过字符串文字进行对象访问"
interface ECType
{
name: string;
type: string;
elementType?: string;
}
export var fields: { [structName: string]: Array<ECType>; } = { };
class ECStruct1 {
foo: string;
bar: number;
baz: boolean;
qux: number;
quux: number;
corge: ECStruct2[];
grault: ECStruct2;
constructor() {
...
}
}
fields['ECStruct1'] = [
{ name: 'foo', type: 'string' },
{ name: 'bar', type: 'int' },
{ name: 'baz', type: 'bool' },
{ name: 'qux', type: 'long' },
{ name: 'quux', type: 'ulong' },
{ name: 'corge', …
Run Code Online (Sandbox Code Playgroud) tslint ×10
typescript ×8
angular ×3
angular-cli ×1
eslint ×1
http ×1
ide ×1
javascript ×1
reactjs ×1
webstorm ×1