如何将下面的Javascript转换成TypeScript? function getProperties(obj) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(obj[key]);
}
}
} 我找不到一个可行的解决方案。TypeScript中的对象键显然不是string类型,而是string literal type类型。有没有可能遍历编译时不知道确切类型的对象的属性?
如果[]操作符访问动态类属性,可以声明它的类型,如下面的示例所示:
class Foo {
[key: string]: number;
}
let a = new Foo();
let b = a['bar']; //Here, the compiler knows that b is a number
但是,没有[]操作符,是否有方法声明相同的东西呢?一种写这个的方法:
let a = new Foo();
let b = a.someProperty;
让TypeScript知道someProperty的类型是number,因为我们告诉它:Foo上的所有未知属性都是
对象扩展广泛用于更新功能样式的旧对象,如下所示:
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:
编译位于typescript文件中的以下代码时出现错误:
parent.$(mySelector)
这里我在$符号上遇到了一个错误,这个符号对于typescript编译器来说是未知的。通过定义文件引用Jquery。我可以做些什么来仍然能够使用这种编写代码的方法呢?
我遇到的正确错误如下:
The property '$' does not exist on value of type 'Window'
陷入了一些我无法想象的事情中。
我希望在我的TypeScript包中有一个如下函数:
function example<U>(key: keyof U) {
return function<T extends U[typeof key]>(
value: T,
cb: (obj: unknown /* not sure what this should be typed as */) => void
) {
// ...
}
}
并事先通过未知的联盟进入它:
type Union =
| {
color:
这感觉像一个非常简单的问题,但我无法理解它或找到正确的例子。
假设我想创建一个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
我试图定义这个对象类型。
colors: {
text: "#343D48", // body color and primary color
text_secondary: "#02073E", // secondary body color
heading: "#565F67", // primary heading color
heading_secondary: "#0F2137", // heading color
background: "#FFFFFF", // body back
我可以通过console.log访问redux中的信息。但是当我试图访问这些信息的某些部分时,我会得到一些类型错误。
const profile = useSelector(state => state);
console.log(profile); // Work's and print the info
console.log(profile.auth.token); // Does not work
TypeScript错误在/src/components/Header/index.tsx(17,24):对象的类型‘未知’。
我正在使用react和typescript,并且在下面代码块的最后一行得到了这个错误。 Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'. No index signature with a parameter of type 'number' was found on type '{}'. ts(7053) 从hemisphereInfo[he
我想把这段代码转换成typescript。仍然很新,我相信这里有一个微不足道的答案。
问题的症结在于,对象上的键应该能够接受任何可能的值(作为增强,甚至可能是嵌套对象,但这是稍后才会出现的)。
我如何让TypeScript知道允许一个键的参数,假设它可以是任何字符串?
// Creates an array of options.
// With current libs, it'll format to objects with this shape: {label: string; value: string}
// interface Option {
// label: