在TypeScript中,我试图使用for (let x in obj)循环,但是TypeScript编译器没有正确识别x的类型.它总是假设它是string类型的。
在下面的示例中,正确地检测到obj循环外的for类型。TypeScript编译器将其识别为number。但是,当obj应该是number时,for循环中的string就会被识别为string。
let myObj: { [key: number]: number } = { 0: 43, 5: 23 };
let obj = myObj[0]; // let obj: number
for (let obj in myObj)
WebStorm为TypeScript提供了一个很好的特性:我可以右键单击*.html文件中的函数引用,无论是在脚本标记中还是在dom元素的事件处理程序中(例如'onclick'),当我选择Go To TypeScript时,它给了我选择TypeScript定义的选项,这样我就可以直接跳到TypeScript代码了。
我正在Visual 2013中尝试做类似的事情。由于Visual似乎不支持这一点,所以我尝试了一种我认为可能有效的黑客。我定义了一个带有"links.ts“文件名的”链接“文件,它实际上包含100%有效的JavaScript,但是链接到在其他TypeScr
为什么TypeScript 4.1.3抱怨Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ bar: string; }'. No index signature with a parameter of type 'string' was found on type '{ bar: string; }'在for in循环中处理引用对象的属性?
当然,我
对象扩展广泛用于更新功能样式的旧对象,如下所示:
let o1 = { x: 5, y: 6 };
let o2 = { ...o1, y: 10 };
alert(JSON.stringify(o2));
在新的TypeScript 2.1中,我们现在已经实现了对象扩展,但与简单的对象文本不同,它允许具有未知属性:
interface Point { x: number, y: number }
let o1: Point = { x: 5, y: 6 };
//ERROR: Object literal may only specify known properties
let o2:
这感觉像一个非常简单的问题,但我无法理解它或找到正确的例子。
假设我想创建一个ServiceProvider类,在内部将类实例映射到字符串标识符或实例构造函数。当使用时,它看起来如下所示:
let provider = new ServiceProvider();
provider.set('date', new Date());
provider.set('other', new SomeObject());
provider.get('date'); // I want TypeScript to know this is a date ob
我有一个非常简单的问题,我想在TypeScript中循环一个对象。
const an_object = {
one: 1,
two: 2,
three: 3
};
for (let key in an_object) {
let value = an_object[key];
// Do something with value
}
此行let value = an_object[key];导致TypeScript错误:
react脚本元素隐式具有“任意”类型,因为“string”类型的表达式不能用于索引类型“{一:数字;二:数字;三:数字;}”。
我有一个具有以下结构的JavaScript对象:
{
"_index": 1,
"foo": { ... },
"bar": { ... },
"baz": { ... },
}
也就是说,对象总是有一个带有数字值的属性_index,然后所有其他键(因为它被用作映射而没有定义)都有另一个特定对象的值。
我在TypeScript中尝试了以下类型
type Properties = {
_index: number
}
type Fields = {
// its not important what Me
如何将下面的Javascript转换成TypeScript? function getProperties(obj) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(obj[key]);
}
}
} 我找不到一个可行的解决方案。TypeScript中的对象键显然不是string类型,而是string literal type类型。有没有可能遍历编译时不知道确切类型的对象的属性?
我有个东西
const person = {
first: 'John',
last: 'Doe',
id: 1,
}
我要从person对象中删除密钥。因此,在JavaScript中,它可以工作。
['first', 'last'].forEach((i) => {
delete person[i]
})
错误(来自未编译的编辑器VSCode )
Element implicitly has an 'any' type because expression of type 'stri
我正在使用来自react-query的useQuery钩子,当我试图在查询函数中访问我的键时,也就是useQuery的第二个参数,我遇到了一个关于typescript的问题,它抱怨这个语句 const postId = queryKey[1].id as any 那 Property 'id' does not exist on type 'string | { id: string | undefined; comments: boolean; }'.
Property 'id' does not exist on type 's
我目前使用TypeScript推荐的方法来迭代对象的键。
let key: keyof ExampleObject;
for (key in exampleObject) {
// do some work with exampleObject[key];
}
在我当前的项目中,Eslint抱怨使用这样的for..in构造:
for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values