```ts
export function layConveyor(floor: string[], row: number, col: number, length: number): string[] {
    if (!Array.isArray(floor) || floor.length === 0) {
        throw new Error("Invalid floor plan provided.");
    }
    
    const numRows = floor.length;
    const numCols = floor[0].length;

    // Check if the row is within bounds
    if (row < 0 || row >= numRows) {
        throw new Error("Row index out of range.");
    }

    // Check if the column is within bounds
    if (col < 0 || col + length > numCols) {
        throw new Error("Column index out of range or length exceeds available columns.");
    }

    // Validate that each cell in the run is open (.)
    for (let i = 0; i < length; i++) {
        const cell = floor[row][col + i];
        if (cell !== '.') {
            throw new Error("Cell at [row, col + i] must be open.");
        }
    }

    // Create a copy of the floor plan to avoid mutating the original
    const newFloor: string[] = [...floor];

    // Lay out the conveyor run
    for (let i = 0; i < length; i++) {
        newFloor[row][col + i] = '=';
    }

    return newFloor;
}
```