无法在打字稿中使用 createQuery()
Unable to use createQuery() in typescript
我正在使用上面的方法开发一个 vsts 扩展。这是代码-
import { QueryHierarchyItem } from "TFS/WorkItemTracking/Contracts";
var postedQuery = [
{
"children": [],
"clauses": {
"field": {
"referenceName": "System.WorkItemType",
"name": "Work Item Type",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.WorkItemType"
},
"operator": {
"referenceName": "SupportedOperations.Equals",
"name": "="
},
"value": "Bug"
},
"columns": [
{
"referenceName": "System.Id",
"name": "ID",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.Id"
},
{
"referenceName": "System.Title",
"name": "Title",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.Title"
},
{
"referenceName": "System.State",
"name": "State",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.State"
}
],
"createdBy": {
"id": "d291b0c4-a05c-4ea6-8df1-4b41d5f39eff",
"displayName": "Jamal Hartnett <fabrikamfiber4@hotmail.com>"
},
"createdDate": "2016-06 - 01T16: 58:56.64Z",
"filterOptions": "WorkItems",
"hasChildren": false,
"id": "df60fdf6-3b5f-4928-aae8-29ee63df6e31",
"isDeleted": false,
"isFolder": false,
"isInvalidSyntax": true,
"isPublic": false,
"lastModifiedBy": {
"id": "d291b0c4-a05c-4ea6-8df1-4b41d5f39eff",
"displayName": "Jamal Hartnett <fabrikamfiber4@hotmail.com>"
},
"lastModifiedDate": "2016-06 - 01T16: 58:56.64Z",
"name": "All Bugs",
"path": "Shared Queries",
"queryType": "flat",
"sortColumns": [
{
"field": {
"referenceName": "Microsoft.VSTS.Common.Priority",
"name": "Priority",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/Microsoft.VSTS.Common.Priority"
},
"descending": false
},
{
"field": {
"referenceName": "System.CreatedDate",
"name": "Created Date",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.CreatedDate"
},
"descending": true
}
],
"wiql": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Bug' order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc",
}
]
let queryPath = "Shared Queries";
let Query: QueryHierarchyItem = postedQuery;
client.createQuery(Query, "Team_P1", queryPath).then((wi) => {
},
(query) => {
});
默认情况下,tsc 编译器会将错误消息截断为 100 个字符。
您可以通过在 tsconfig.json 文件的 compilerOptions
属性 中设置 "noErrorTruncation": true
来更改它。
有关详细信息,请参阅 Typescript Compiler Options
现在报错信息为(美化后)
'Type '
{
"children": any[];
"clauses": {
"field": {
"referenceName": string;
"name": string;
"url": string;
};
"operator": {
"referenceName": string;
"name": string;
};
"value": string;
};
"columns": {
"referenceName": string;
"name": string;
"url": string;
}[];
"createdBy": {
"id": string;
"displayName": string;
};
"createdDate": string;
"filterOptions": string;
"hasChildren": boolean;
"id": string;
"isDeleted": boolean;
"isFolder": boolean;
"isInvalidSyntax": boolean;
"isPublic": boolean;
"lastModifiedBy": {
"id": string;
"displayName": string;
};
"lastModifiedDate": string;
"name": string;
"path": string;
"queryType": string;
"sortColumns": {
"field": {
"referenceName": string;
"name": string;
"url": string;
};
"descending": boolean;
}[];
"wiql": string;
}[]
' is not assignable to type 'QueryHierarchyItem'.
Property 'children
' is missing in type [type repeated].
'
您将 postedQuery
声明为数组 []
而 QueryHierarchyItem
这就是缺少 属性 children
的原因。
如果删除数组,您将收到新的错误消息,其中缺少属性等。
顺便说一下,根据 this link 看来您不需要创建整个对象,您可以创建一个空对象并分配所需的参数。
let queryPath = "Shared Queries";
let query: <QueryHierarchyItem>{};
query.Name = 'Query Name';
query.wiql = '...'
client.createQuery(query, "Team_P1", queryPath)
.then(wi => {
console.log(wi);
}, q => {
console.log(q);
});
首先可以参考Cyril的回答
其次,您可以参考这段代码:
let Query:any={
name:"Api Query",
wiql: "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Bug' order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc"
};
let queryPath = "Shared Queries";
client.createQuery(Query, "Team_P1", queryPath).then((wi) => {
},
(query) => {
});
我正在使用上面的方法开发一个 vsts 扩展。这是代码-
import { QueryHierarchyItem } from "TFS/WorkItemTracking/Contracts";
var postedQuery = [
{
"children": [],
"clauses": {
"field": {
"referenceName": "System.WorkItemType",
"name": "Work Item Type",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.WorkItemType"
},
"operator": {
"referenceName": "SupportedOperations.Equals",
"name": "="
},
"value": "Bug"
},
"columns": [
{
"referenceName": "System.Id",
"name": "ID",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.Id"
},
{
"referenceName": "System.Title",
"name": "Title",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.Title"
},
{
"referenceName": "System.State",
"name": "State",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.State"
}
],
"createdBy": {
"id": "d291b0c4-a05c-4ea6-8df1-4b41d5f39eff",
"displayName": "Jamal Hartnett <fabrikamfiber4@hotmail.com>"
},
"createdDate": "2016-06 - 01T16: 58:56.64Z",
"filterOptions": "WorkItems",
"hasChildren": false,
"id": "df60fdf6-3b5f-4928-aae8-29ee63df6e31",
"isDeleted": false,
"isFolder": false,
"isInvalidSyntax": true,
"isPublic": false,
"lastModifiedBy": {
"id": "d291b0c4-a05c-4ea6-8df1-4b41d5f39eff",
"displayName": "Jamal Hartnett <fabrikamfiber4@hotmail.com>"
},
"lastModifiedDate": "2016-06 - 01T16: 58:56.64Z",
"name": "All Bugs",
"path": "Shared Queries",
"queryType": "flat",
"sortColumns": [
{
"field": {
"referenceName": "Microsoft.VSTS.Common.Priority",
"name": "Priority",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/Microsoft.VSTS.Common.Priority"
},
"descending": false
},
{
"field": {
"referenceName": "System.CreatedDate",
"name": "Created Date",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/fields/System.CreatedDate"
},
"descending": true
}
],
"wiql": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Bug' order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc",
}
]
let queryPath = "Shared Queries";
let Query: QueryHierarchyItem = postedQuery;
client.createQuery(Query, "Team_P1", queryPath).then((wi) => {
},
(query) => {
});
默认情况下,tsc 编译器会将错误消息截断为 100 个字符。
您可以通过在 tsconfig.json 文件的 compilerOptions
属性 中设置 "noErrorTruncation": true
来更改它。
有关详细信息,请参阅 Typescript Compiler Options
现在报错信息为(美化后)
'Type '
{ "children": any[]; "clauses": { "field": { "referenceName": string; "name": string; "url": string; }; "operator": { "referenceName": string; "name": string; }; "value": string; }; "columns": { "referenceName": string; "name": string; "url": string; }[]; "createdBy": { "id": string; "displayName": string; }; "createdDate": string; "filterOptions": string; "hasChildren": boolean; "id": string; "isDeleted": boolean; "isFolder": boolean; "isInvalidSyntax": boolean; "isPublic": boolean; "lastModifiedBy": { "id": string; "displayName": string; }; "lastModifiedDate": string; "name": string; "path": string; "queryType": string; "sortColumns": { "field": { "referenceName": string; "name": string; "url": string; }; "descending": boolean; }[]; "wiql": string; }[]
' is not assignable to type 'QueryHierarchyItem'. Property 'children
' is missing in type [type repeated]. '
您将 postedQuery
声明为数组 []
而 QueryHierarchyItem
这就是缺少 属性 children
的原因。
如果删除数组,您将收到新的错误消息,其中缺少属性等。
顺便说一下,根据 this link 看来您不需要创建整个对象,您可以创建一个空对象并分配所需的参数。
let queryPath = "Shared Queries";
let query: <QueryHierarchyItem>{};
query.Name = 'Query Name';
query.wiql = '...'
client.createQuery(query, "Team_P1", queryPath)
.then(wi => {
console.log(wi);
}, q => {
console.log(q);
});
首先可以参考Cyril的回答
其次,您可以参考这段代码:
let Query:any={
name:"Api Query",
wiql: "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Bug' order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc"
};
let queryPath = "Shared Queries";
client.createQuery(Query, "Team_P1", queryPath).then((wi) => {
},
(query) => {
});