后续的变量声明必须具有相同的类型。变量“where”必须是“any[]”类型,但这里有“string[]”类型
Posted
技术标签:
【中文标题】后续的变量声明必须具有相同的类型。变量“where”必须是“any[]”类型,但这里有“string[]”类型【英文标题】:Subsequent variable declarations must have the same type. Variable 'where' must be of type 'any[]', but here has type 'string[]' 【发布时间】:2020-09-11 16:22:26 【问题描述】:我有以下 javascript 条件。
var year = '2020'
var month = '05'
//var status = 'pending'
var dateParam = '' + year + '-' + month + '%';
if (status == 'pending' || status == 'completed')
var query = "SELECT * FROM activities AS a WHERE DATE(a.start_datetime) LIKE ? AND status = ?;";
var where = [
dateParam,
status
]
else
var query = "SELECT * FROM activities AS a WHERE DATE(a.start_datetime) LIKE ?;";
var where = [
dateParam
]
console.log(query)
console.log(where)
虽然它在 code-sn-p 上运行良好,但我无法从 Angular/Ionic 中获得警告,并出现以下错误。
随后的变量声明必须具有相同的类型。多变的 'where' 必须是 'any[]' 类型,但这里有 'string[]' 类型。
解决此问题的最佳方法是什么?我试图通过声明来进行实验
var where = any[] = []
但是,没有工作,我可能错过了一些东西。
【问题讨论】:
【参考方案1】:不要使用var
,使用const
。 var
使它成为一个全局变量。
【讨论】:
好像不行;找不到名称 'where'.ts(2304) 您需要将您的 console.log 语句放在与where
和 query
变量相同的范围内。这是因为它们不再是全球性的。【参考方案2】:
var year = '2020'
var month = '05'
//var status = 'pending'
var dateParam = '' + year + '-' + month + '%';
var where: any[] = [];
if (status == 'pending' || status == 'completed')
var query = "SELECT * FROM activities AS a WHERE DATE(a.start_datetime) LIKE ? AND status = ?;";
where = [
dateParam,
status
]
else
var query = "SELECT * FROM activities AS a WHERE DATE(a.start_datetime) LIKE ?;";
where = [
dateParam
]
console.log(query)
console.log(where)
根据你的代码回答,在顶部声明并初始化where
变量。
因为 var 没有块作用域。然后query
变量。也是。
【讨论】:
啊!这行得通!感谢您指出我错过的内容。以上是关于后续的变量声明必须具有相同的类型。变量“where”必须是“any[]”类型,但这里有“string[]”类型的主要内容,如果未能解决你的问题,请参考以下文章