我正在使用 Koa 和 Typescript 编写网络应用程序。在 vscode 中,我遇到了不需要的代码格式:当我使用对象解析方法声明变量时,vscode 在多行中自动格式化它:
deleteUser: async (ctx: Context) => {
const {
body: { userId }
} = ctx;
await userService.deleteUser(userId);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望它保留在一行中:
deleteUser: async (ctx: Context) => {
const { body: { userId } } = ctx;
await userService.deleteUser(userId);
}
Run Code Online (Sandbox Code Playgroud)
我喜欢 vscode 处理我的代码格式的方式,所以我不想禁用它。但我想找到一种解决方法,如果行长度小于 80 个字符,则禁用对象解构格式。
我应该使用什么规则来解决这个问题?我应该更改 vscode 规则还是 tslint 规则?
这是我的 .tslint 文件:
{
"rules": {
"class-name": true,
"comment-format": [true, "check-space"],
"indent": ["tabs"],
"one-line": [true, "check-open-brace", "check-whitespace"],
"no-var-keyword": true,
"quotemark": [true, "double", "avoid-escape"],
"semicolon": [true, …Run Code Online (Sandbox Code Playgroud) formatting object-destruction typescript tslint visual-studio-code
我有一个在 Azure DevOps 中运行的 Web 应用程序,并希望在合并之前确保代码符合标准;例如“开发/测试/主”。我制作了一个 tslint 规则文件,并希望强制执行此规则。以一种方式强制执行它,无论何时他们向分支发出拉取请求。当获得批准或在获得批准之前使构建失败。或者更好的是,在他的代码匹配 tslint 规则之前,不要让开发人员发出拉取请求。
是否有任何工具可以集成到 azure 管道中以检查代码并将其与 tslint 规则进行比较,以便在不匹配时使合并或构建失败。
我在 ItelliJ 中加载了一个 angular 项目,所有文件都有一些用红色下划线标出的代码。右边的滚动条上也有同样的红色。代码似乎充满了错误,但它们只是缺少空格或类似的东西;该项目已正确构建。甚至在 // 之后没有空格的注释也会用红色下划线表示。
负责人是 TSLint。
这让我分心;我想为“真正的”问题加下划线的代码,并且可能在左侧(而不是滚动条中)为注释或导入中缺少空格的黄色建议。
我发现了这个(这里https://github.com/Microsoft/vscode-tslint/issues/199)
tslint.alwaysShowRuleFailuresAsWarnings
但它在visualStudio中,我不知道在intelliJ中的哪里添加这个选项。
你知道如何禁用这个红色下划线吗?
还有一个问题,如果我要禁用 TSLint,除了格式之外,我会丢失任何东西吗?我喜欢有一个格式良好的代码,但是在 IntelliJ 环境中,我希望主要是语法错误而不是格式错误,至少不是实时的(也许我可以在需要时运行以检查代码格式,因为我直到现在)。
这是第一个答案要求的屏幕截图。设置被忽略了,可能是我电脑有问题...(顺便说一下TLSint是5.0.0)
我收到以下 lint 错误:
error TS7006: Parameter 'snapshot' implicitly has an 'any' type.
Run Code Online (Sandbox Code Playgroud)
在以下 Firebase 云功能上:
exports.createTeamMember = functions.firestore
.document(`teamProfile/{teamId}/teamMemberList/{newUserId}`)
.onCreate(async (snapshot, context) => {
const id: string = snapshot.data().id;
const email: string = snapshot.data().email;
const teamId: string = snapshot.data().teamId;
});
Run Code Online (Sandbox Code Playgroud) 我想在将ignoreParameters 选项设置为false 的情况下使用此规则。我的 eslint 配置了一个.eslintrc.json文件,但我无法找到如何设置该文件中规则的选项。我查看了文档并用谷歌搜索,我查看了这个问题,但我找不到如何使用 eslint 和.eslintrc.json文件设置规则选项的示例。
这是我.eslintrc.json尝试添加此规则之前的文件(该规则已应用,但使用默认选项而不是我想要的选项):
{
"parser": "@typescript-eslint/parser",
"extends": [
"react-app",
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier/@typescript-eslint",
"plugin:prettier/recommended"
],
"rules": {
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/no-explicit-any": 0,
"no-return-await": 2,
"curly": 2
}
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,总是导致规则不再被应用(有错误 Definition for rule '@typescript-eslint/no-inferable-types' was not found @typescript-eslint/no-inferable-types):
{
"parser": "@typescript-eslint/parser",
"extends": [
"react-app",
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier/@typescript-eslint",
"plugin:prettier/recommended"
],
"rules": {
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/no-explicit-any": 0,
"no-return-await": 2,
"curly": 2,
"@typescript-eslint/no-inferable-types": [
"error",
{
"ignoreParameters": true
}
] …Run Code Online (Sandbox Code Playgroud) 我正在使用css-modules和构建一个 Gatsby 项目gatsby-config.js,我在其中解决了一个.scss扩展。
它构建并且工作得很好,但是我的 linter 不同意这一点,当我尝试导入这样的样式时,会引发错误“无法找到模块'./style'或其相应的类型声明.ts(2307) ”:
如果我从 js/ts/jsx/tsx 文件导入,则不会出现错误,但是当我尝试导入模块之类的样式(或图像)时,如果没有正确的扩展名,则会引发此错误。
我已经尝试在项目根目录的“typings”文件夹内将扩展声明为模块,例如“声明模块“*.scss””,但不起作用。
我的gatsby-config.js
const path = require('path');
const isDev = process.env.NODE_ENV === 'development';
module.exports = {
siteMetadata: {
title: 'Title from siteMetadata',
},
plugins: [
{
resolve: `gatsby-plugin-sass`,
options: {
cssLoaderOptions: {
sourceMap: isDev,
modules: {
mode: 'local',
localIdentName: '[local]--[hash:base64:5]',
},
},
},
},
{
resolve: 'gatsby-plugin-alias-imports',
options: {
alias: {
'@containers': path.resolve(__dirname, 'src/containers'),
'@components': path.resolve(__dirname, 'src/components'),
'@pages': path.resolve(__dirname, 'src/pages'),
},
extensions: ['.js', …Run Code Online (Sandbox Code Playgroud) 我正在尝试添加prehook,如果代码无法提交任何棉绒问题。什么是实现它的正确方法。
tslint.sh
#!/bin/sh
sh ./npm-install.sh
if [ $? -ne 0 ]; then
echo "npm-install error, exiting.."
exit 1
fi
echo "Running ts lint"
npm run lint
if [ $? -ne 0 ]; then
echo "Unit tests error, exiting.."
exit 1
fi
Run Code Online (Sandbox Code Playgroud) map不使用TSLint的情况下使用遍历数组并返回新对象:可以通过省略花括号和关键字“ return”,并将对象文字括在括号中来简化此箭头函数的主体。
例如,对象用户:
class User {
constructor(
public id: number,
public first_name: string,
public last_name: string,
public gender: Date,
public location: number,
)
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时:
const simple_users = users.map(u => { return { name: u.name, id: u.id} });
Run Code Online (Sandbox Code Playgroud)
然后发生这种情况:
[tslint]通过省略花括号和 关键字“ return”,并将对象文字括在括号中。(箭头返回简写)
而且我要遵守tslint规则arrow-return-shorthand。
我正在使用TSLint处理VS Code,在某些时候 TSLint 建议我重新定义一个数组变量,而不是const说let:
let pages = [];
Run Code Online (Sandbox Code Playgroud)
“标识符“pages”永远不会重新分配;使用“const”而不是“let”。(首选 const)”
但由于数组是可变变量,为什么const应该优先使用 a 而不是let?
我有这样的代码:
if (!confirmPassword) {
errors.confirmPassword = DefaultValidateErrors.confirmPassword;
} else if (password && password !== confirmPassword) {
errors.confirmPassword = DefaultValidateErrors.confirmPasswordMatch;
}
Run Code Online (Sandbox Code Playgroud)
tslint 已将此标记为 tsr-detect-possible-timing-attacks,这听起来是正确的,但我该如何解决。
我的tslint.json中有以下规则:
"member-ordering": [
true,
{
"order": [
"public-before-private",
"static-before-instance",
"variables-before-functions"
]
}
],
Run Code Online (Sandbox Code Playgroud)
但是我仍然收到此警告:
Warning: member-ordering - Bad member kind: public-before-private
Run Code Online (Sandbox Code Playgroud)
Typescrypt版本是3.1.1
节点版本为10.10.0
我试图为 @Output 分配一个别名,但出现 TSLint 错误,
export class CockpitComponent implements OnInit {
@Output('bpCreated') blueprintCreated = new EventEmitter<{ serverName: string, serverContent: string }>();
@Output('srvCreated') serverCreated = new EventEmitter<{ serverName: string, serverContent: string }>();
Run Code Online (Sandbox Code Playgroud)
TSLint:在“CockpitComponent”类中,不应重命名指令输出属性“serverCreated”。请考虑以下使用“@Output() serverCreated = new EventEmitter();” (无输出重命名)
那么什么时候应该在 Angular 中为@Output()和@Input()分配别名呢?
tslint ×12
typescript ×8
angular ×3
git ×2
javascript ×2
azure-devops ×1
azure-repos ×1
css-modules ×1
firebase ×1
formatting ×1
node.js ×1
reactjs ×1
webpack ×1