我正在将几个项目从 TSLint 迁移到 ESLint,我发现 ESLint 没有阻止 promise 被正确处理的规则,或者至少我没有在文档中找到它。
TSLint 中的no-floating-promises 规则迫使程序员要么let flag_create_element = false;
let flag_mouse_down = false;
$('.btn_create').off('mousedown').on('mousedown', function (event) {
flag_mouse_down = true;
flag_create_element = true;
let created_option_title = '<div class="new-element-added"></div>';
if (flag_create_element){
$('body').append(created_option_title);
$('.new-element-added').draggable();
}
});
$('body').off('mousemove').on('mousemove',function (event) {
$(this).on('mousemove', createAndMoveElement(event));
}).off('mouseup').on('mouseup', function () {
flag_mouse_down = false;
flag_create_element = false;
//$('.new-element-added').remove();
});
function createAndMoveElement(event) {
if (flag_mouse_down){
$('.new-element-added').draggable();
}
flag_create_element = false;
}
$('#droppable_zone').droppable({
drop: function () {
alert('ok');
}
});
,要么#droppable_zone{
position: fixed;
left: 0;
right:0;
top:0;
bottom:0;
margin: auto;
width: 50vw;
min-height: 50vh;
background-color: bisque;
}
.btn_create{
position: absolute;
left:0;
top:0;
width: 45px;
height: 45px;
background-color: green;
}
.new-element-added{
width: 200px;
height: 200px;
background-color: blue;
position: absolute;
display: block;
z-index: 999;
}
所有承诺。有没有办法在 ESLint 中获得相同的功能?
我知道 this answer,但我认为 OP 指的是具有不同行为的规则:<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<article id="droppable_zone">
</article>
<button type="button" class="btn_create">
<i class="fas fa-plus align-middle font-15"></i>
</button>
所有承诺。此外,这个问题的答案是 npm 包 eslint-plugin-package,它已经两年没有发布了。
答案 0 :(得分:1)
typescript-eslint plugin 有一个 rule,它强制正确处理所有承诺。
安装 ESLint:
安装 typescript-eslint 插件:
npm i --save-dev eslint typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin
将其添加到您当前的 ESLint 配置中:
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
],
};
<块引用>
如果您在安装 ESLint 时选择了“强制流行编码风格”并选择了“标准”,那么您可能已经安装了这个插件。不过,如果您有疑问,请检查您的 ESLint 配置文件。
并将规则添加到您的规则对象中:
// .eslintrc.js
/* the rest of the configuration */
rules: {
'@typescript-eslint/no-floating-promises': 'error',
/8 the rest of the rules */
}