need to destructuring declaration and to access global scope use var instead of let. public getNeighbours(coords: Coords): Coords[]; public getNeighbours(x: number, y: number): Coords[]; public getNeighbours(a: number | Coords, b?: number): Coords[] { // let x: number; // let y: number; if (typeof a === 'object') { var {x, y} = a as Coords; // A destructuring declaration must have an initializer x = x; y = y; console.log('inside destructuring: ', x, y); } else { x = a; y = b as number; } console.log('outside destructuring: ', x,y); const result = [{ x: x - 1, y }, { x: x + 1, y }, { x, y: y - 1 }, { x, y: y + 1 }]; return result; }
проверьте здесь Пример StackBlitz
можно избежать var и объявить объект глобально.
public getNeighbours(coords: Coords): Coords[]; public getNeighbours(x: number, y: number): Coords[]; public getNeighbours(a: number | Coords, b?: number): Coords[] { // let x: number; // let y: number; let globalStorage: any = {}; if (typeof a === 'object') { let {x, y} = a as Coords; // A destructuring declaration must have an initializer globalStorage.x = x; globalStorage.y = y; console.log('inside destructuring: ', x, y); } else { globalStorage.x = a; globalStorage.y = b as number; } console.log('outside destructuring: ', globalStorage); const result = [{ x: globalStorage.x - 1, y:globalStorage.y }, { x: globalStorage.x + 1, y:globalStorage.y }, { x: globalStorage.x, y: globalStorage.y - 1 }, { x: globalStorage.x, y: globalStorage.y + 1 }]; return result; }
Вместо того, чтобы пытаться записать непосредственно в ответ, Вы могли бы хотеть просто добавить средства управления к странице. Так как страница совершенно нова и не имеет никакой разметки, Вам, вероятно, придется добавить все элементы HTML для создания ее легальным HTML для представления ее правильно. Никогда попробовав это, я понятия не имею, будет ли это работать.
Page myPage = new Page();
page.Controls.Add( new LiteralControl( "hello " + pageName ) );
return myPage;
Мне не ясно, что это будет иметь необходимый HTML, ГОЛОВУ и Теги основного текста. Могло бы быть лучше создать базовую страницу, которая имеет скелетную разметку, к которой можно просто добавить средства управления и использовать BuildManager в качестве в примере, чтобы инстанцировать этой страницы, затем добавить средства управления.
Вы не можете писать в ответ от IRouteHandler
- это слишком рано во время жизненного цикла запроса. Вы должны писать только в ответ из IHttpHandler
, что и является страницей
.
Как показано в других примерах, вам нужно будет откуда-то получить экземпляр страницы, имеющий все необходимое содержимое.
Вот как вы можете загрузить существующую страницу:
Page p = (Page)BuildManager.CreateInstanceFromVirtualPath("~/MyPage.aspx");
Или вы можете создать ее с нуля:
Page p = new Page();
p.Controls.Add(new LiteralControl(
@"<html>
<body>
<div>
This is HTML!
</div>
</body>
</html>"));
Поместите запросContext перед ответом. Написать, так что requestcontext.response.write