以下代码会导致错误,因为根据TypeScript,类型Pick<Test<T>, Exclude<keyof T, "someKey">>不能赋值给T。当我推断这种类型时,它应该被赋值给T,有没有办法让TypeScript同意我的观点?或者这只是突破了TypeScript中泛型类型的界限,因为不是动态类型的变体可以正确编译。 type Test<T = {}> = T & {
someKey: string
};
function extract<T>(props: Test<T>): T
是否可以将typescript联合类型与表单对象类型的值重新映射? 例如我在mid中的: type Union = 'item-type' | 'category';
type Special = {
'item-type': 'itemType';
};
type RemapedValue = [... some realy awesome typescript ...] // => 'itemType' | 'category'
我在RN项目中有样式化的组件和typescript Typescript在我的一个文件中抛出了一个奇怪的错误,上面写着Element implicitly has 'any' type because expression of type 'string' can't be used to index 'ColorKeyType' 受影响的代码,错误在return theme.colors[color]部分 const StyledText = styled(Text)<TextStyleProps>`
color: $
如何访问和默认不存在的对象属性?
在此示例中,typescript抱怨fooBar[foo] - Element implicitly has an 'any' type because expression of type '"fooBar"' can't be used to index type '{ readonly foo: "bar"; readonly bar: "foo"; }'. Property 'fooBar' does not exist on t
Pick类型包括在TypeScript中。它的实施情况如下:
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
如何编写PickByValue类型以使下列工作:
type Test = {
includeMe: 'a' as 'a',
andMe: 'a' as 'a',
butNotMe: 'b' as 'b',
orMe: 'b' as 'b'
};
type Inclu
在TypeScript中,私有属性被认为是类型的形状(或接口)的一部分。
class Person {
constructor(private name: string, public age: number) { }
}
const p: Person = { age: 42 };
// Error: Property 'name' is missing.
这是有效的,因为TypeScript需要跟踪隐私。
class Person {
constructor(private name: string, public age: number) { }
equals
我一直在研究并尝试将现有项目(从Node.js)转换为TypeScript。
对于上下文,我使用的是http-status包()
我试图将变量传递到它们的默认导出中,但是它得到了一个错误:
import status = require("http-status");
status.OK; // this works
status["OK"] // this also works
let str = "OK";
status[str]; // error
错误:
元素隐式具有'any‘类型,因为类型'string’的表达式不能
在TypeScript中有没有一种方法可以直接从对象的键创建一个新类型?在下面的示例中,TypeScript正确地抱怨('msg' refers to a value, but is being used as a type here.) msg引用了一个值,但我想知道是否有一种方法可以在不创建单独的类型定义的情况下使其正常工作? const msg = {okay: 'Okay', cancel: 'Cancel'};
function getMsg(id: keyof msg): string {
return msg[id];
}
在普通的JavaScript中,我们可以使用变量读取对象的属性值。
也就是说,这是有效的:
let obj = { a: 100, b: 'Need help with TypeScript', c: new Date() };
let prop = 'b';
console.log( obj[prop] ); // Need help with TypeScript
但是,下面的TypeScript注释声明prop为字符串将导致指示的索引错误。
let obj: object = { a: 100, b: 'Need help with TypeSc
我想通过对象类型的值类型来过滤类型。 这在当前的typescript规范中是可能的吗? type a = {
a: '123'
}
type b = {
b: '123'
}
tpye c = {
a: '123',
}
type map = {
first: a,
second: b,
third: c,
}
type HavingAValueMap = Magic<map>; // pick value with having 'a' property
// { first: {.
我正在尝试获取TypeScript枚举的所有项。为此,我使用以下泛型函数: static getAllValues<T>(enumeration: T): Array<T>{
let enumKeys: Array<T> = Object.keys(enumeration).map(k => enumeration[k]);
let items: Array<T> = new Array<T>();
for(let elem of enumKeys){
if (typeof(elem)